12

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

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

我已经尝试过:

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

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

4

3 回答 3

7

您可以创建一个 .eml 文件并打开它,只要系统中注册了任何电子邮件客户端来处理具有此扩展名的文件,它就会为您提供所需的效果。我确信这不像该mailto:方案那样普遍,但如果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 让用户选择电子邮件客户端,因为没有通用的方法来完成您所询问的事情。

于 2011-01-20T22:21:52.247 回答
4

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

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

于 2011-02-04T05:53:08.653 回答
1

Some time ago I've began to write a small library for opening the 'default email client' in a platform independent way. It still may need some work, but you can use it as a base if you want: https://github.com/picaschaf/qt-email

于 2014-03-11T13:05:19.970 回答