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)

我有上面的代码来显示默认的电子邮件客户端。但我需要自动发送电子邮件。有没有办法使用脚本按下“发送”按钮?

4

3 回答 3

1

为什么需要通过 GUI 客户端发送消息?客户端被设计为电子邮件协议与使用鼠标和键盘的人之间的接口,而不是您的 Python 脚本。

您可以使用smtplib模块直接从 Python 发送电子邮件。如果您需要在 Thunderbird 中记录它,也许您可​​以抄送给自己。

于 2011-06-06T12:30:05.147 回答
0

如果您想/需要使用 Python 执行此操作,有一个名为pywinauto的 Windows GUI 自动化工具可能会有所帮助。

于 2011-06-07T14:41:23.250 回答
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\"")

(我希望我能正确逃脱)。您可能想使用 subprocess 模块而不是 os. VBScript 实际上只按下 Thunderbird 中的发送按钮。我认为这只有在电子邮件实际上可以出现在其他所有内容前面的新窗口中时才有效。我使用此设置发送发票等。

于 2013-11-21T00:26:14.387 回答