点击发送按钮

1 投票
3 回答
1372 浏览
提问于 2025-04-16 19:01
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)

我有上面的代码可以打开默认的邮件客户端。但是我想要自动发送邮件。有办法用这个脚本来点击“发送”按钮吗?

3 个回答

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 里按下发送按钮。我觉得这个方法只有在邮件能在其他窗口前面弹出来的时候才有效。我用这个方法来发送发票之类的东西。

0

如果你想用Python来做这个,有一个叫做 pywinauto 的工具,它可以在Windows上帮助你自动化一些操作,可能会对你有用。

1

为什么你需要通过图形界面客户端发送消息呢?这个客户端是用来让人类通过鼠标和键盘与邮件协议进行互动的,而不是让你的Python脚本来用。

你可以直接用Python中的 smtplib 模块发送邮件。如果你想在Thunderbird中留个记录,也许可以抄送一份给自己。

撰写回答