C++ 使用客户端'发送带有附件的电子邮件;s电子邮件应用程序

C++ 使用客户端'发送带有附件的电子邮件;s电子邮件应用程序,c++,qt,email,attachment,mailto,C++,Qt,Email,Attachment,Mailto,我需要本地安装的厚客户端应用程序(Qt/C++)在客户端机器上生成一封随时可发送的电子邮件: 此消息必须包含相对较小(15K-200K)二进制文件的内容 在生成此邮件时,我的许多用户都将被断开连接,因此可能需要将电子邮件放在发件箱中,直到稍后 该应用程序将在Windows、Mac OS X和各种Linux发行版(Ubuntu/Debian和Fedora的官方支持)上运行,并且不需要安装特定的电子邮件客户端 我已经试过: 使用带有attach(或attachment)参数的QDesktopS

我需要本地安装的厚客户端应用程序(Qt/C++)在客户端机器上生成一封随时可发送的电子邮件:

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

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

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

您可以创建一个.eml文件并打开它,只要系统中注册了任何电子邮件客户端来处理具有此扩展名的文件,该文件就会给您带来想要的效果。我确信这并不像
mailto:
方案那样通用,但如果
mailto:
对您不起作用,我认为这可能是第二个最好的选择

因为创建EML文件是为了符合 使用行业RFC 822标准, 它们可以用于大多数电子邮件 客户端、服务器和应用程序。 除了Microsoft Outlook Express, 可以使用most打开EML文件 电子邮件客户端,如Microsoft Outlook、Microsoft环境、Mozilla 雷鸟、苹果邮件和 增量邮件

旁注

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

我认为您使用的方法不正确;使用MAPI /C++。我在Outlook和雷鸟中使用了MAPI /C++两次。您可以通过查询注册表选择默认的电子邮件客户端;我认为所有的应用程序都是这样做的


另请参见此处的链接

不久前,我开始编写一个小型库,用于以独立于平台的方式打开“默认电子邮件客户端”。它可能还需要一些工作,但如果您愿意,可以将其用作基础:

+1,这是windows上的解决方案。不幸的是,这个问题表明它需要一个跨平台的解决方案……您能给出任何链接,说明如何在Qt中使用MAPI吗?你贴的那个不幸死了