【问题标题】:How to open the user's preferred mail application on Linux?如何在 Linux 上打开用户首选的邮件应用程序?
【发布时间】:2015-01-29 23:08:39
【问题描述】:

我用 python-gtk 写了一个简单的原生 GUI 脚本。现在我想给用户一个按钮来发送带有附件的电子邮件。

脚本在 Linux 桌面上运行。有没有办法打开用户首选的邮件应用程序并附加文件?

【问题讨论】:

标签: python email desktop-application xdgutils


【解决方案1】:

要调用的 linux 命令将是 xdg-email,它是 xdg-utils 包的一部分,它位于大多数 linux 桌面(至少默认情况下在 arch、debian、ubuntu 上)。

xdg-email 是“使用用户首选的电子邮件编辑器发送邮件的命令行工具”。

如果他们正确设置了默认应用程序,它将打开他们的默认邮件客户端。您可以传递参数来填写各种邮件字段(收件人、抄送、主题、正文等),以及要附加的文件的文件名。

从你的 python 脚本中,你可以使用 os.system() 或 subprocess 模块来调用它..

【讨论】:

  • 谢谢!它甚至可以在旧的 openSUSE 11.4 上使用。
  • 如果客户端是thunderbird,添加附件不适用于xdg-email。很伤心。我猜大多数用户使用雷鸟。欢迎来到 linux 桌面管道:bugs.launchpad.net/ubuntu/+source/simple-scan/+bug/515386
  • 在 xdg-email 中存在上述错误之前,我将其用于 Thunderbird:kb.mozillazine.org/Command_line_arguments_%28Thunderbird%29
  • 下一个错误:我正在从命令行调用 Thunderbird。但是附加几个文件对我不起作用。仅附加第一个文件:thunderbird -compose "attachment='/etc/mtab',attachment='/etc/fstab'"
  • @guettli 那应该是thunderbird -compose "attachment='/etc/mstab,/etc/fstab'"
【解决方案2】:

您可以利用webbrowser 模块打开网址。
您还可以利用mailto 协议让网络浏览器打开系统默认邮件客户端(如果可用)。

这是一个简单的例子:

import webbrowser
webbrowser.open("mailto:test@example.com?subject=Hello World")

注意,不支持附件。 mailto 协议不提供对附件的支持。一些客户支持(根据谷歌)非标准属性attachment=PATH。但我无法真正确认这一点。

各种电子邮件客户端可以通过多种方式打开带有附件的电子邮件撰写窗口,但每个客户端之间的方法不同。另外我不知道有什么标准方法可以确定默认的邮件程序。

更多信息您也可以查看wikipedia

【讨论】:

  • 也许 webbrowser 实例可以通过包含附件文件的关联数组以某种方式创建?恭喜获得第一个分流管家徽章! :-)
  • mailto 协议本身没有对文件附件的官方支持,因此传递任何类型的数组不太可能产生影响。 (我是第二名)
  • 然后可以使用第三个 api 调用来创建邮件(及其附件)。
【解决方案3】:

这就是你设置用户代理的方式

  settings = webkit.WebSettings()
  settings.set_property('user-agent', 'iPad')
  webview.set_settings(settings)

对于附加图像,请查看此脚本以了解想法

http://pygtk.org/pygtk2tutorial/examples/images.py

这不是确定的,但我希望它有所帮助。

【讨论】:

  • 我不明白你的回答。看起来您修改了 HTTP 用户代理。我要打开原生邮件用户代理:Thunderbird、evolution ...
猜你喜欢
  • 2014-11-16
  • 2011-03-08
  • 2012-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-02
  • 1970-01-01
相关资源
最近更新 更多