【发布时间】:2015-01-29 23:08:39
【问题描述】:
我用 python-gtk 写了一个简单的原生 GUI 脚本。现在我想给用户一个按钮来发送带有附件的电子邮件。
脚本在 Linux 桌面上运行。有没有办法打开用户首选的邮件应用程序并附加文件?
【问题讨论】:
标签: python email desktop-application xdgutils
我用 python-gtk 写了一个简单的原生 GUI 脚本。现在我想给用户一个按钮来发送带有附件的电子邮件。
脚本在 Linux 桌面上运行。有没有办法打开用户首选的邮件应用程序并附加文件?
【问题讨论】:
标签: python email desktop-application xdgutils
要调用的 linux 命令将是 xdg-email,它是 xdg-utils 包的一部分,它位于大多数 linux 桌面(至少默认情况下在 arch、debian、ubuntu 上)。
xdg-email 是“使用用户首选的电子邮件编辑器发送邮件的命令行工具”。
如果他们正确设置了默认应用程序,它将打开他们的默认邮件客户端。您可以传递参数来填写各种邮件字段(收件人、抄送、主题、正文等),以及要附加的文件的文件名。
从你的 python 脚本中,你可以使用 os.system() 或 subprocess 模块来调用它..
【讨论】:
thunderbird -compose "attachment='/etc/mtab',attachment='/etc/fstab'"
thunderbird -compose "attachment='/etc/mstab,/etc/fstab'"
您可以利用webbrowser 模块打开网址。
您还可以利用mailto 协议让网络浏览器打开系统默认邮件客户端(如果可用)。
这是一个简单的例子:
import webbrowser
webbrowser.open("mailto:test@example.com?subject=Hello World")
注意,不支持附件。 mailto 协议不提供对附件的支持。一些客户支持(根据谷歌)非标准属性attachment=PATH。但我无法真正确认这一点。
各种电子邮件客户端可以通过多种方式打开带有附件的电子邮件撰写窗口,但每个客户端之间的方法不同。另外我不知道有什么标准方法可以确定默认的邮件程序。
更多信息您也可以查看wikipedia
【讨论】:
这就是你设置用户代理的方式
settings = webkit.WebSettings()
settings.set_property('user-agent', 'iPad')
webview.set_settings(settings)
对于附加图像,请查看此脚本以了解想法
http://pygtk.org/pygtk2tutorial/examples/images.py
这不是确定的,但我希望它有所帮助。
【讨论】: