c++ - 如何通过指定的电子邮件客户端发送消息?

标签 c++ qt

我有一个应用程序需要将格式化的消息和地址发送到电子邮件客户端(例如 Lotus Notes、Outlook 等 - 最好是前者)。然后,客户端应在后台发送该消息而无需任何干预(即,任何人都不必在客户端中按下发送按钮)。

我有消息,我有地址,我知道如何选择默认电子邮件客户端。

如何发送预先格式化的消息和地址(我猜是一些 MAIL:TO)并让客户端自动发送消息?

该应用程序使用 C++ 和 Qt。我可能需要调用客户端的一些 API。他们会暴露这些吗?

最佳答案

这在某种程度上依赖于平台,可以通过以下两种方式之一来处理 方法:有一个邮件服务器进程,您可以连接到该进程(使用 socket );或者,您将输出通过管道传输到邮件客户端(mailmailx 在 Unix 下)。到邮件客户端的管道通常更简单,但我不是 确保 Windows 机器有一个现成的。 (你说你有一个 默认电子邮件客户端。以什么形式?如果是 URL,则需要使用 socket ;如果它是本地程序的名称,则为管道。)

在这两种情况下,您可能希望创建一个 streambuf 来处理 输出,为了使用所有的格式化可能性 std::ostream

如果你想在后台做,最可靠的方法是创建一个 单独进程:将数据写入文件,然后使用system执行 邮件客户端并在完成后删除文件(一个小批处理脚本)。 或者,如果您确定 在邮件发送之前,您的进程不会被终止。

关于c++ - 如何通过指定的电子邮件客户端发送消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12104475/

相关文章:

Emacs 键绑定(bind)中的 Qt Creator

c++ - 比较字符串时 QtTest 失败,即使它们相同? C++

qt - QPainter::drawPixmap()看起来不好并且质量低劣?

c++ - 是否可以将一个类的插槽或常规函数连接到另一个类的插槽或常规函数? (QT)

c++ - C++读取访问冲突,0xCDCDCDCD

c++ - QTableView/QTableWidget 缓存不同的 View

c++ - 错误 : ISO C++ forbids comparison between pointer and integer

c++ - 错误链接以 boost 序列化

c++ - 数组是指针吗?

Python:从 Qt Designer 创建的 QPlainTextWidget 获取击键