Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何打开用户';Linux上的首选邮件应用程序?_Python_Email_Desktop Application_Xdgutils - Fatal编程技术网

Python 如何打开用户';Linux上的首选邮件应用程序?

Python 如何打开用户';Linux上的首选邮件应用程序?,python,email,desktop-application,xdgutils,Python,Email,Desktop Application,Xdgutils,我用python gtk编写了一个简单的原生GUI脚本。现在我想给用户一个按钮来发送一封带有附件的电子邮件 该脚本在Linux桌面上运行。有没有办法打开用户首选的邮件应用程序并附加文件?这就是设置用户代理的方法 settings = webkit.WebSettings() settings.set_property('user-agent', 'iPad') webview.set_settings(settings) 对于附加图像,请查看此脚本以获得想法 这还不确定,但我希望

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


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

这就是设置用户代理的方法

  settings = webkit.WebSettings()
  settings.set_property('user-agent', 'iPad')
  webview.set_settings(settings)
对于附加图像,请查看此脚本以获得想法


这还不确定,但我希望能有所帮助

您可以利用
webbrowser
模块打开URL。
您还可以利用该协议让webbrowser打开系统默认邮件客户端(如果可用)

下面是一个简单的例子:

import webbrowser
webbrowser.open("mailto:test@example.com?subject=Hello World")
注意,不支持附件。mailto协议不支持附件。根据谷歌的说法,一些客户端支持非标准属性
attachment=PATH
。但我还不能证实这一点

各种电子邮件客户端都有打开带有附件的电子邮件撰写窗口的方法,但每个客户端的方法不同。我也不知道有什么标准的方法来确定什么邮件程序被设置为默认


有关更多信息,您还可以查看要调用的linux命令,它是xdg utils包的一部分,在大多数linux桌面上(至少在arch、debian和ubuntu上默认)

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

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


从python脚本中,您可以使用os.system()或子流程模块调用它。

我不明白您的答案。看起来您修改了HTTP用户代理。我想打开本机邮件用户代理:Thunderbird,evolution…谢谢!它甚至可以在旧的openSUSE 11.4上使用。如果客户端是thunderbird,则添加附件不适用于xdg电子邮件。非常伤心。我猜大多数用户使用雷鸟。欢迎使用linux桌面管道:在xdg电子邮件中存在上述错误之前,我将此用于thunderbird:下一个错误:我正在从命令行呼叫thunderbird。但是附加几个文件对我不起作用。只有第一个文件被附加:
thunderbird-compose“attachment='/etc/mtab',attachment='/etc/fstab'
@guettli,它应该是
thunderbird-compose“attachment='/etc/mstab,/etc/fstab'
相关的:也许webbrowser实例可以用包含附件文件的关联数组创建?祝贺第一个分流管家徽章!:-)mailto协议本身没有对文件附件的官方支持,因此传递任何类型的数组都不太可能产生影响。(我是第二个)然后邮件(及其附件)可能可以通过第三个api调用创建。