定向到带有附件 Python 的默认邮件应用程序

Directing to Default Mail App with Attachment Python

提问人:JadeCeci 提问时间:3/2/2023 更新时间:3/3/2023 访问量:183

问:

我一直在尝试将用户定向到 PC 上的默认邮件应用程序(或让用户选择他们想要的邮件应用程序),然后打开该应用程序以发送已包含附件的邮件。

我尝试了mailto和webbrowser在这里解释: Python:在系统上启动默认邮件客户端 它们可以工作,但无法再通过这些方法自动添加附件。我读到由于一些安全问题,它被删除了。或者也许我找不到该怎么做。

我通过使用带有 outlook 的 pywin32 实现了我想要的东西。但它要求用户在他们的电脑上有前景,并不是每个人都有。

我不想使用像 smtplib 这样的东西,我只想使用用户 PC 上的任何邮件应用程序,或者可能以某种方式使用 chrome 或其他方式将他们引导到 gmail。我希望用户在尚未登录的情况下向定向应用程序输入自己的密码。不能在代码中输入任何类型的密码。

除了使用限制性的 outlook 之外,我找不到任何解决方案。我能做些什么吗?

python 电子邮件 pyqt 附件 电子邮件附件

评论


答:

1赞 tla 3/3/2023 #1

在 Windows 上,您可以编写 MIME 格式的电子邮件草稿,并将其写入包含所有所需附件的.eml文件中。 然后,使用 os.startfile 启动用于处理电子邮件草稿的默认应用程序。

在 Linux 上,没有一个可用的工具 xdg-email。 您可以使用以下命令启动它:os.startfile()subprocess

import subprocess
subprocess.run(["xdg-email", "--attach", "1.png", "[email protected]"])

但是,它没有实现任何标准接口,而是尝试猜测要启动的应用程序,并逐案支持每个接口: https://github.com/freedesktop/xdg-utils/blob/8ae02631a9806da11b34cd6b274af02d28aee5da/scripts/xdg-email.in

您也可以手动实现相同的逻辑,检测程序以启发式方式启动,并至少启动 Outlook 或 Thunderbird。Thunderbird 有一个命令行界面,可以创建带有 .thunderbird -compose "[email protected],attachment=...

评论

0赞 JadeCeci 3/3/2023
谢谢,这帮助了我。但是,看似常规的 Windows Mail 应用程序只能以只读模式打开 eml 文件,这有点违背了它的目的。但至少我现在有了另一种发送邮件的方式。