繁体   English   中英

使用客户端的电子邮件应用程序发送附件附件

[英]Send email with attachment using client's email application

我需要在本地安装的胖客户端应用程序(Qt / C ++)在客户端的计算机上生成可立即发送的电子邮件:

  • 此消息必须包含相对较小(15K - 200K)二进制文件的内容。
  • 在生成此消息时,我的许多用户都将断开连接,因此电子邮件可能需要在稍后的时间内保留在发件箱中。
  • 此应用程序将在Windows,Mac OS X和各种Linux发行版(Ubuntu / Debian和Fedora的官方支持)上运行,并且不要求需要安装特定的电子邮件客户端。

我已经尝试过了:

  • 使用带有attach (或attachment )参数的QDesktopServices::openUrl()打开mailto:链接。 但这些参数并不是协议的正式部分,有些客户端(尤其是Outlook)会忽略它们。
  • 使用Base64对文件进行编码,并将其作为mailto: link的body参数的一部分添加。 但是mailto链接的长度被一些电子邮件客户端(再次,特别是Outlook)截断,所以这不起作用。

当您从应用程序中发送图片时,Google Picasa可以实现此目的(至少在Windows上;未检查其他操作系统)。 它会创建一个包含附件和一些预填充文本的消息。 然后,您可以编辑消息并在方便时发送。 他们是如何做到这一点的任何想法?

您可以创建一个.eml文件并打开它,只要在系统中注册了任何电子邮件客户端来处理具有此扩展名的文件,就可以为您提供所需的效果。 我确信这不像mailto: scheme那样普遍,但如果mailto:对你不起作用,我认为这可能是第二个尝试的最佳选择。

来自http://www.coolutils.com/Formats/EML

由于EML文件的创建符合行业RFC 822标准,因此它们可用于大多数电子邮件客户端,服务器和应用程序。 除了Microsoft Outlook Express,还可以使用大多数电子邮件客户端打开EML文件,例如Microsoft Outlook,Microsoft Entourage,Mozilla Thunderbird,Apple Mail和IncrediMail。

边注
当我点击Picasa中的“电子邮件”时,我会在对话框中选择要发送电子邮件的应用程序(Thunderbird或Google Mail)。 这意味着Picasa知道用于发送电子邮件的特定电子邮件客户端,并且可以使用特定于所选电子邮件客户端的自定义方法发送电子邮件。 这当然只是猜测,但可能是Picasa让用户选择电子邮件客户端,因为没有通用的方法可以做你所要求的。

我不认为你正在使用正确的方法; 使用MAPI / C ++。 我使用MAPI / C ++在Outlook / Thunderbird中多次完成此操作。 您可以通过查询注册表来选择默认的电子邮件客户端; 我认为这就是所有应用程序的功能。

另请参阅此处的链接http://lists.trolltech.com/qt-interest/2006-02/thread00861-0.html

前段时间我开始编写一个小型库,以独立于平台的方式打开“默认电子邮件客户端”。 它仍然可能需要一些工作,但你可以使用它作为基础: https//github.com/picaschaf/qt-email

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM