2011-06-06 75 views
1
def mailto_url(to=None,subject=None,body=None,cc=None): 
    url = "mailto:" + urllib.quote(to.strip(),"@,") 
    sep = "?" 
    if cc: 
     url+= sep + "cc=" + urllib.quote(cc,"@,") 
     sep = "&" 
    if subject: 
     url+= sep + "subject=" + urllib.quote(subject,"") 
     sep = "&" 
    if body: 
     body="\r\n".join(body.splitlines()) 
     url+= sep + "body=" + urllib.quote(body,"") 
     sep = "&" 
    return url 
import urllib 
import webbrowser 
url = mailto_url('email address', 'subject', 'message body') 
webbrowser.open(url,new=1) 

我有上面的代碼來帶出默認的電子郵件客戶端。但我需要自動發送電子郵件。有什麼方法可以使用腳本按下「發送」按鈕?點擊發送按鈕

+0

你爲什麼試圖自動化一個GUI郵件客戶端,而不是僅僅用Python發送消息?至少,您幾乎肯定需要知道您的用戶正在使用的操作系統和電子郵件客戶端。例如,在Mac上,用Applescript做這件事相當容易。 – geoffspear 2011-06-06 11:32:24

+1

該腳本僅適用於我。所以你說我需要了解郵件客戶端的GUI?是否有可能在Windows上運行Applescript? – Jeremy 2011-06-06 11:39:54

回答

1

爲什麼你需要通過GUI客戶端發送消息?客戶端被設計爲電子郵件協議和人與鼠標和鍵盤之間的接口,而不是Python腳本。

您可以使用smtplib模塊直接從Python發送電子郵件。如果你需要在Thunderbird中記錄它,也許你可以自己完成。

0

如果你想要/需要用Python來做到這一點,那麼有一個叫做pywinauto的Windows GUI自動化工具可能會有幫助。

0

保存此像sendmail.vbs文件

dim sendKeyObj 
Set sendKeyObj = CreateObject("WScript.Shell") 
sendKeyObj.SendKeys "^{ENTER}" 

,並使用Python與

cscript /nologo "C:\path\to\sendmail.vbs" 

所以運行在命令行這個腳本,這將是在Python

import os 
os.system("cscript /nologo \"C:\\path\\to\\sendmail.vbs\"") 

(我希望我有逃脫的權利)。你可能想使用子進程模塊而不是os。 VBScript確實只能按下Thunderbird中的發送按鈕。我認爲這隻有在電子郵件實際上出現在其他所有窗口的新窗口中時纔有效。我使用這個設置發送發票等。