我需要本地安装的胖客户端应用程序 (Qt/C++) 在客户端机器上生成准备发送的电子邮件:
- 此消息必须包含相对较小 (15K - 200K) 的二进制文件的内容。
- 在生成此消息时,我的许多用户都将断开连接,因此电子邮件可能需要在发件箱中等待一段时间。
- 此应用程序将在 Windows、Mac OS X 和各种 Linux 发行版(官方支持 Ubuntu/Debian 和 Fedora)上运行,并且不需要安装特定的电子邮件客户端。
我已经试过了:
- 使用带有
attach
(或attachment
)的QDesktopServices::openUrl()
打开mailto:
链接范围。但这些参数并不是协议(protocol)的正式组成部分,一些客户端(尤其是 Outlook)会忽略它们。 - 使用 Base64 编码文件并将其添加为
mailto:
链接的body
参数的一部分。但是mailto
链接的长度会被一些电子邮件客户端(同样,尤其是 Outlook)截断,所以这不起作用。
当您从应用程序中发送图片时,Google Picasa 实现了这一点(至少在 Windows 上;尚未检查其他操作系统)。它创建带有附件和一些预填充文本的消息。然后,您可以编辑消息并在方便时发送。有什么想法他们是如何做到的吗?
最佳答案
您可以创建一个 .eml 文件并打开它,只要系统中注册了任何电子邮件客户端来处理具有此扩展名的文件,它就会为您提供所需的效果。我确定这不像 mailto:
方案那样通用,但如果 mailto:
不适合您,我认为这可能是第二个尝试的最佳选择。
来自 http://www.coolutils.com/Formats/EML
Since EML files are created to comply with the industry RFC 822 standard, they can be used with most e-mail clients, servers and applications. Besides the Microsoft Outlook Express, EML files can be opened using most e-mail clients, such as Microsoft Outlook, Microsoft Entourage, Mozilla Thunderbird, Apple Mail, and IncrediMail.
旁注
当我在 Picasa 中单击“电子邮件”时,我会看到一个对话框,我可以在其中选择要使用哪个应用程序(Thunderbird 或 Google Mail)发送电子邮件。这意味着 Picasa 知道用于发送电子邮件的特定电子邮件客户端,并且可以使用特定于所选电子邮件客户端的自定义方法来发送电子邮件。这当然只是猜测,但可能是 Picasa 让用户选择电子邮件客户端,因为没有通用的方法来做您所询问的事情。
关于c++ - 使用客户的电子邮件应用程序发送带附件的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4751953/