如何在 Windows XP 或 Windows 7 上编辑“发送给邮件收件人”

如何在 Windows XP 或 Windows 7 上编辑“发送给邮件收件人”

我使用的客户端是 Windows Live Mail。期望结果:

  1. 用户右键单击文件并选择“发送到->邮件收件人”(或另一个自定义创建的快捷方式)。

  2. Windows Live Mail 新消息窗口弹出,其中包含:

    收件人:特定电子邮件地址
    主题:(空)
    正文:(空)
    单击的文件已附加

我最接近的是在“发送到”文件夹中创建具有以下目标的快捷方式:。C:\Program Files\Windows Live\Mail\wlmail.exe" /mailurl:mailto:[email protected]

结果是弹出 Windows Live Mail 新消息窗口,其中包含:

到:[电子邮件保护]“C:\somefile.txt”
主题:(空)
正文:(空)

几乎正确,除了,未附加所选文件!仅在收件人:字段中提及。我怎样才能将其附加,同时To:自动填充字段?

编辑:“请注意,您不能从命令行附加文件”,这意味着至少这非常困难。

答案1

不幸的是,可能没有好的办法来做到这一点,但下面是一个自动热键基本上可以完成工作的脚本。维基百科对 AutoHotkey 的概述如下

该脚本已在装有 Windows Live Mail 2012 的 Windows 7 上测试。虽然脚本的大部分开头部分(最多Run)都是通用的,但其余部分是特定的,如果使用其他 GUI 电子邮件程序(例如 Outlook 365、Thunderbird 等),则可能需要进行更改。

期望

编写脚本时考虑了以下几点...

  • AutoHotkey 安装在执行脚本的 PC 上。如果您想将脚本转换为独立的可执行文件,请查看ahk2exe

  • 该脚本要求单个AutoHotkey 脚本命令行参数— 电子邮件地址。这允许一个脚本处理(可能)不同的电子邮件地址。

为了传递地址,应该为每个潜在地址创建一个链接,如下所示:

"C:\Path\To\AutoHotkey\AutoHotkey.exe" "C:\Path\To\Script.ahk"  [email protected]
  • 为了统一操作并使用命令行参数(这会增加脚本的可靠性),脚本会终止然后重新启动wlmail.exe。因此,如果您已经在使用 Windows Live Mail,请在运行之前保存您的工作!

  • 该脚本使用剪贴板。因此,在运行脚本之前,您应该Ctrl+您想要附加的项目。C

已知的问题

不幸的是,我不是 AutoHotkey Ninja,所以这个脚本可能并不完美。;-)

然而,经过几天的测试,下面的脚本至少 99% 的时间是可靠的。

  • 您可能会偶尔遇到时间问题,导致F10 按键脚本中的内容无法被 Windows Live Mail 识别。

这主要是因为 Windows Live Mail 缺乏更可靠的自动化方法(即没有命令行附件、非标准功能区界面、没有用于附加文件的热键组合)。

  • 如果出现“计划任务”窗口,这也可能会使事情陷入混乱。

  • 如果剪贴板的路径无效,您可能必须手动终止脚本(见下文)。

最后,请注意,如果脚本的操作被中断(您无法到达 Windows Live Mail 打开的地步您想要的商品将自动附加),您应该查看快速启动区域,并确保在必要时关闭该脚本实例,然后再试一次。

AutoHotkey 脚本自动在 Windows Live Mail 中添加附件

使用

将项目复制到剪贴板(Ctrl+C最简单),然后单击启动脚本的链接(该脚本还应将收件人的姓名作为命令行参数传递。)

应将下面的脚本文本全部复制/粘贴到标准文件中.txt,并使用.ahk(AutoHotkey 脚本)扩展名重命名。

; -- Functions & Variables --
; A custom to check if a given processes is active 
  ProcessExist(Name){
      Process,Exist,%Name%
      return Errorlevel
  }

; -- Begin Script --

; Command line parameter debug box. 
;MsgBox, The number of command line parameters is %0%. `n`n The email recipient is %1%

; Check for command line parameters - terminate if we have anything but one. 
If 0 <> 1
{
     MsgBox, You have not specified a valid email address. Script terminating.
     exitapp                        ; Exit our script
 }

; If our clipboard is empty, show a warning
If clipboard =
{
     MsgBox, 4, , Please copy your attachment to the clipboard.`n`nContinue?
     IfMsgBox, No, exitapp          ; Exit our script
}

ClipWait                            ; Wait for the clipboard to contain text.

;Display the last item copied to the clipboard to confirm this is the item we want. 
Loop, parse, clipboard, `n, `r
{
    MsgBox, 4, , File number %A_Index% for attachement is located at %A_LoopField%.`n`nEmail recipient is %1%.`n`nContinue?
    IfMsgBox, No, exitapp           ; Quit the AutoHotkey script if the user says no.
}

; Start with a clean Windows Live Mail instance. 
; wlmail.exe may active as a process so we make sure to kill it.

If ProcessExist("wlmail.exe")
    Process, Close, wlmail.exe

Sleep 100                           ; Make sure the process has time to terminate

; Start a fresh wlmail.exe process to send a new email.
; /mailurl:mailto: is part of the wlmail.exe command line options.
Run, "C:\Program Files (x86)\Windows Live\Mail\wlmail.exe" /mailurl:mailto:%1%

; Make sure our New Message window is active
WinWait, New Message, 
IfWinNotActive, New Message, , WinActivate, New Message, 
WinWaitActive, New Message,

; If the script is going to fail, it will be between the TAB TAB F10 4 strokes.

; Double TAB brings us to the body of the message. Otherwise, the address field is the first active
; item and F10 brings up a different menu.
Send, {TAB} {TAB}

; Show the attachment dialog via pressing F10 then 4.
; Increase the Sleep value for better key stroke reliability -- 5000+ recommended.
; Otherwise, Windows Live Mail seems to "miss" the F10 stroke.
Sleep 5000              
Send, {F10}
Send, 4 

; Make sure our Open file dialog is active
WinWait, Open, 
IfWinNotActive, Open, , WinActivate, Open, 
WinWaitActive, Open,  

; Copy our file path from the clipboard and open it
Send, {CTRLDOWN}v{CTRLUP}
Sleep 1000
Send {TAB}{TAB}{Enter}

exitapp                                 ; Exit our script

相关内容