Qt:使用 'mailto:' 打开用户的电子邮件客户端对于 gmail 失败

Qt: Use 'mailto:' to open user's email client fails for gmail

我使用 Qt 的 openUrl() 和 'mailto' link 打开用户的电子邮件客户端,如最佳答案 所示。这适用于 Outlook,但如果用户的电子邮件客户端 Chrome 配置为在收到 mailto: link 时打开 gmail,整个收件人、主题和正文都在 'to' 电子邮件字段。

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 测试了它并且它有效。