2011-01-20 80 views
12

发送电子邮件附件我需要本地安装的,胖客户端应用程序(QT/C++),产生了一个现成的待发送的电子邮件客户端的机器上:使用客户的电子邮件应用程序

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

我已经尝试:

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

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

回答

7

您可以创建.eml文件并打开它应该给你想要的,只要有在系统中注册这个扩展处理文件的任何电子邮件客户端的影响。我相信这不像mailto:计划那样普遍,但如果mailto:不适合你,我认为这可能是第二好的选择。

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

由于EML文件被创建符合 与业界RFC 822标准, 他们可以与大多数电子邮件 客户端,服务器和应用程序中使用。 除了微软的Outlook Express, EML文件可以使用最 电子邮件客户端,如Microsoft Outlook中 ,Microsoft Entourage中,Mozilla的雷鸟 ,苹果邮件,并 的IncrediMail打开。

旁注
当我在Picasa中点击“电子邮件”我得到的对话框,我可以选择哪些应用程序(Thunderbird或谷歌邮件),我想与发送电子邮件。这意味着Picasa知道用于发送电子邮件的特定电子邮件客户端,并且可以使用特定于所选电子邮件客户端的自定义方法发送电子邮件。这当然只是猜测,但Picasa可能会让用户选择电子邮件客户端,因为没有通用的方式来执行您所要求的操作。

4

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

在此还看到http://lists.trolltech.com/qt-interest/2006-02/thread00861-0.html

+2

+1,这就是windows上的解决方案。不幸的是,这个问题表明它需要一个跨平台的解决方案...... – Stobor 2011-02-08 13:19:47

1

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

相关问题