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.0 和 Chrome 68.0.3440.106 测试了它并且它有效。
我使用 Qt 的 openUrl() 和 'mailto' link 打开用户的电子邮件客户端,如最佳答案
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.0 和 Chrome 68.0.3440.106 测试了它并且它有效。