c++ - Qt:使用 'mailto:' 打开用户的 gmail 电子邮件客户端失败

标签 c++ qt mailto

我使用带有“mailto”链接的 Qt 的 openUrl() 打开用户的电子邮件客户端,作为最佳答案 here演示。这适用于 Outlook,但如果用户的电子邮件客户端是 Chrome,配置为在收到 mailto: 链接时打开 gmail,则整个收件人、主题和正文最终都会出现在电子邮件的“收件人”字段中。

QDesktopServices::openUrl(QUrl("mailto:" + to + "&subject=" + subject + "&body=" + body, QUrl::TolerantMode));

我尝试先对主题和正文进行编码,但这没有帮助。任何想法如何解决这个问题或替代方法? (使用 Qt 5.9.5,但这也影响了以前的版本,例如 5.7.1。)

最佳答案

这实际上不是 Qt 相关的问题。问题出在 HTML 代码中。

根据 this answer ,您应该将 &subject 更改为 ?subject 以使其工作。

所以你的代码应该是:

QDesktopServices::openUrl(QUrl("mailto:" + to + "?subject=" + subject + "&body=" + body, QUrl::TolerantMode));

我刚刚用 Qt 5.10.0Chrome 68.0.3440.106 测试了它,它可以工作。

关于c++ - Qt:使用 'mailto:' 打开用户的 gmail 电子邮件客户端失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51866978/

相关文章:

c++ - 一个类应该使用函数指针调用另一个类的方法

c++ - QScrollArea 不能按预期与 QWidget 和 QVBoxLayout 一起工作

c++ - 在 Visual Studio 2005 中基于命令行作为 GUI 应用程序或控制台应用程序启动的可执行文件

javascript mailto 在 chrome 移动浏览器中不起作用

javascript - html mailto - 从变量插入邮件正文

c++ - 在保留顺序的同时从 Vector 中删除元素 - 需要更好的方法

c++ - 返回 std::make_unique<SubClass> 是如何工作的?

qt - QDataWidgetMapper 不适用于 QLabels

c++ - Qt Creator 的 VC++ 编译器

javascript - 来自 Javascript 的 MailTo