O cliente que estou usando é o Windows Live Mail. Resultado desejado:
O usuário clica com o botão direito em um arquivo e seleciona "Enviar para-> Destinatário do correio" (ou outro atalho personalizado criado).
A janela Nova mensagem do Windows Live Mail é exibida e contém:
Para: endereço de e-mail específico
Assunto: (vazio)
Corpo: (vazio)
O arquivo clicado está anexado
O mais próximo que cheguei foi criar um atalho na pasta Enviar para com esse destino: .C:\Program Files\Windows Live\Mail\wlmail.exe" /mailurl:mailto:[email protected]
O resultado é que a janela Nova mensagem do Windows Live Mail aparece e contém:
Para:[e-mail protegido]"C:\somefile.txt"
Assunto: (vazio)
Corpo: (vazio)
Quase certo, exceto,o arquivo selecionado não está anexado! É mencionado apenas no campo Para:.Como posso anexá-lo e preencher o To:
campo automaticamente?
EDIT: "Observe que você não pode anexar arquivos da linha de comando", significa que é pelo menos muito difícil.
Responder1
Infelizmente pode não haver uma boa maneira de fazer isso, mas abaixo está umAutoHotkeyscript que principalmente realiza o trabalho.Uma visão geral do AutoHotkey da Wikipedia está aqui.
Este script foi testado no Windows 7 com Windows Live Mail 2012. Embora a maioria das partes iniciais do script (até Run
) sejam genéricas, o restante é específico e provavelmente exigirá alterações se outro programa de e-mail GUI (por exemplo, Outlook 365, Thunderbird, etc.) é usado.
Expectativas
O roteiro foi escrito com o seguinte em mente...
AutoHotkey é instalado no PC que executa o script. Se você quiser transformar o script em um executável independente, confiraahk2exe.
O script espera um únicoParâmetro de linha de comando do script AutoHotkey- um endereço de e-mail. Isso permite que um script lide com endereços de e-mail (potencialmente) diferentes.
Para passar um endereço, um link para cada endereço potencial deve ser criado da seguinte forma:
"C:\Path\To\AutoHotkey\AutoHotkey.exe" "C:\Path\To\Script.ahk" [email protected]
Para uma ação uniforme e usando parâmetros de linha de comando (que aumentam a confiabilidade do script), o script é encerrado e reiniciado
wlmail.exe
. Portanto, se você já estiver trabalhando com o Windows Live Mail, salve seu trabalho antes de executá-lo!O script usa a área de transferência. Portanto, você deve Ctrl+ Co item que deseja anexar antes de executar o script.
Problemas conhecidos
Infelizmente, não sou um AutoHotkey Ninja, então este script pode não ser perfeito. ;-)
No entanto, após alguns dias de testes, o script abaixo foi confiável em pelo menos 99% do tempo.
- É possível que você tenha problemas de tempo ocasionalmente que façam com que oTecla F10no script para não ser reconhecido pelo Windows Live Mail.
Isso ocorre principalmente porque o Windows Live Mail não possui métodos de automação mais confiáveis (ou seja, nenhum anexo de linha de comando, interface de faixa de opções não padrão e nenhuma combinação de teclas de atalho para anexar arquivos).
Se a janela “Tarefas agendadas” aparecer, isso também pode atrapalhar.
Se o caminho da área de transferência não for válido, talvez seja necessário encerrar manualmente o script (veja abaixo).
Por fim, esteja ciente de que se as ações do script forem interrompidas (você não chega a um ponto em que o Windows Live Mail abree o item que você deseja é anexado automaticamente), você deve olhar para a área Quick Launch e certificar-se de encerrar essa instância do script, se necessário, antes de tentar novamente.
Script AutoHotkey para automatizar anexos no Windows Live Mail
Usar
Copie um item para a área de transferência ( Ctrl+ Cé mais fácil) e clique no link que inicia o script (que também deve passar o nome do destinatário como parâmetro de linha de comando).
O texto do script abaixo deve ser copiado/colado integralmente em um .txt
arquivo padrão e renomeado com a .ahk
extensão (script 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