通过 gmail api 发送电子邮件时在电子邮件主题中使用撇号创建问题

Posted

技术标签:

【中文标题】通过 gmail api 发送电子邮件时在电子邮件主题中使用撇号创建问题【英文标题】:Using apostrophe in email subject while sent email via gmail api creating an issue 【发布时间】:2021-10-14 16:10:20 【问题描述】:

虽然使用下面的subject 发送电子邮件,其中apostrophe 替换为其他字符

Actual 主题:我们会为你打 100,800 通电话

Mail Shows 主题:我们将为您拨打 100,800 个电话

当我通过 api 发送电子邮件时发生问题,当我从 SMTP 发送电子邮件时它工作正常

请检查我下面的 api 代码

 string msg = "From: " + FromName + "<" + From + ">" + " \r\n" +
                                 "To: " + ToName + "<" + To + ">" + " \r\n" +
                                 "BCC: " + BCCEmail + " \r\n" +
                                 "Subject: " + Subject + " \r\n" +
                                 "Message-ID: mID_" + messageID + "\r\n" +
                                   "References: "+encryptMessageID + "\r\n" +
                                     "In-Reply-To: " + encryptMessageID + "\r\n" +
                                 "Content-Type: " + contentType + "; charset=us-ascii\r\n\r\n" + Body;

                dynamic objSendMsg = new  raw = commonFunction.Base64UrlEncode(msg) ;
                if (!string.IsNullOrEmpty(messageThreadID))
                    objSendMsg = new  raw = commonFunction.Base64UrlEncode(msg), threadId = messageThreadID ;

                var _objSendMsg = JsonConvert.SerializeObject(objSendMsg);
                var strSendMsg = new StringContent(_objSendMsg, UnicodeEncoding.UTF8, "application/json");

当我在正文中应用相同的内容时,撇号适用于正文

请查看附件截图

Email copy

【问题讨论】:

【参考方案1】:

您需要对主题标头进行base64_encode,然后将其作为纯文本发送。 API 变得混乱。

Subject: " +  Convert.ToBase64String(Subject) + " \r\n" +

【讨论】:

不适合我显示如下 V2U/bGwgbWFrZSAxMDAsODAwIGNvbGQgY2FsbHMgZm9yIHlvdQ== 的主题 @DalmTo 你有什么解决办法 试试 Base64UrlEncode。您对主体进行编码,您也需要对主题进行编码。

以上是关于通过 gmail api 发送电子邮件时在电子邮件主题中使用撇号创建问题的主要内容,如果未能解决你的问题,请参考以下文章

通过 Gmail REST API 发送的电子邮件/草稿无法在新的 Gmail 用户界面中打开

通过 Gmail API 发送电子邮件时应用 MSO 条件语句

如何通过 gmail-api for python 发送 HTML 格式的电子邮件

使用 Gmail api 通过 Android 应用发送邮件

无法通过 gmail api 向多个发件人发送电子邮件

如何通过 Gmail API 从 .net 核心控制台应用程序发送电子邮件?