Клиент, который я использую — Windows Live Mail. Желаемый результат:
Пользователь щелкает правой кнопкой мыши по файлу и выбирает «Отправить->Получателю почты» (или другой созданный пользователем ярлык).
Появится окно нового сообщения Windows Live Mail, содержащее:
Кому: определенный адрес электронной почты
Тема: (пусто)
Текст: (пусто)
Выбранный файл прикреплен
Ближайшее, что я получил, — это создание ярлыка в папке «Отправить» с таким назначением: .C:\Program Files\Windows Live\Mail\wlmail.exe" /mailurl:mailto:[email protected]
В результате появляется окно нового сообщения Windows Live Mail, содержащее:
К:[email protected]"C:\somefile.txt"
Тема: (пусто)
Текст: (пусто)
Почти верно, за исключением того,выбранный файл не прикреплен! Он упоминается только в поле «Кому».Как мне его прикрепить, одновременно заполняя поля To:
автоматически?
EDIT: «Обратите внимание, что вы не можете прикреплять файлы из командной строки» означает, что это, по крайней мере, очень сложно.
решение1
К сожалению, хорошего способа сделать это может и не быть, но ниже приведенAutoHotkeyсценарий, который в основном выполняет свою работу.Обзор AutoHotkey из Википедии можно найти здесь.
Этот скрипт был протестирован в Windows 7 с Windows Live Mail 2012. Хотя большинство начальных частей скрипта (до Run
) являются общими, остальная часть специфична и, вероятно, потребует изменений, если используется другая программа электронной почты с графическим интерфейсом (например, Outlook 365, Thunderbird и т. д.).
Ожидания
Сценарий был написан с учетом следующего...
AutoHotkey устанавливается на ПК, выполняющем скрипт. Если вы хотите превратить скрипт в автономный исполняемый файл, ознакомьтесь сahk2exe.
Скрипт ожидает одногоПараметр командной строки скрипта AutoHotkey— адрес электронной почты. Это позволяет одному скрипту обрабатывать (потенциально) разные адреса электронной почты.
Чтобы передать адрес, необходимо создать ссылку для каждого потенциального адреса следующим образом:
"C:\Path\To\AutoHotkey\AutoHotkey.exe" "C:\Path\To\Script.ahk" [email protected]
Для единообразия действий и использования параметров командной строки (что повышает надежность скрипта) скрипт убивает, а затем перезапускается
wlmail.exe
. Так что если вы уже работаете с Windows Live Mail, сохраните свою работу перед ее запуском!Скрипт использует буфер обмена. Поэтому перед запуском скрипта следует добавить Ctrl+ Cэлемент, который вы хотите прикрепить.
Известные вопросы
К сожалению, я не гуру AutoHotkey, поэтому этот скрипт может быть неидеальным. ;-)
Однако после пары дней тестирования приведенный ниже скрипт оказался надежным по крайней мере в 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