Gmail API发送含UTF-8特殊字符的HTML邮件时特殊字符被替换为问号的问题求助
Gmail API发送含UTF-8特殊字符的HTML邮件时特殊字符被替换为问号的问题求助
最近我把GCP上的Java云应用从用sendmail改成通过Gmail API发送邮件到Google Workspace,之前发送带UTF-8格式的HTML邮件和特殊字符都没问题,但现在遇到了头疼的问题——Google把特殊字符替换成了字面意义的问号?。
我已经做了两步验证:
- 调用Gmail API发送前,检查过邮件内容里的特殊字符都是正常存在的;
- 邮件通过Gmail发送到客户端后,查看原始消息文本发现特殊字符已经被替换成了
?,而且所有设备和邮件客户端都显示这个状态,因为这些问号是实打实的字面字符,不是编码问题导致的乱码。
我的HTML邮件头部已经加了指定UTF-8的meta标签:
<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head>
出问题的特殊字符包括弯引号(左双引号、右双引号)和 stylized 撇号,比如这段内容:
<p>“Must’ve been fate, you and I.”</p>
经过Gmail API处理后变成了:
<p>?Must?ve been fate, you and I.?</p>
下面是我调用Gmail API的Java代码片段:
MimeMessage email = new MimeMessage(session); // ... 其他邮件属性设置步骤 email.setSubject(subject); email.setContent(htmlBodyText, "text/html"); // ... 其他邮件属性设置步骤 ByteArrayOutputStream buffer = new ByteArrayOutputStream(); email.writeTo(buffer); byte[] rawMessageBytes = buffer.toByteArray(); String encodedEmail = Base64.encodeBase64URLSafeString(rawMessageBytes); Message message = new Message(); message.setRaw(encodedEmail); // ... 其他Message属性设置步骤 message = service.users().messages().send(myEmailAddress, message).execute();
有没有大佬能给点解决建议?
UPDATE:补充Thunderbird邮件客户端收到的原始消息源作为参考:
--0000000000002d8e4006346347a4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <html> <head> =20 <meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DUTF-8"= > </head> <body> <div style=3D"padding:10px 15% 10px 15%;text-align:center;font-family:&#= 39;Open Sans&#39;,Helvetica,Arial,sans-serif"> <div style=3D"width:100%;height:100px;background-color:black;margin-bott= om:20px;color:white;text-align:center;vertical-align:bottom;display:inline-= block;font-family:WeezerFont,Verdana,&#39;Open Sans&#39;,Helvetica,Arial,sa= ns-serif;padding-top:10px;padding-bottom:10px;padding-top:10px"> </div> <div style=3D"width:100%;height:100px;margin-bottom:20px;text-align:c= enter;vertical-align:bottom;display:inline-block;font-family:WeezerFont,Ver= dana,&#39;Open Sans&#39;,Helvetica,Arial,sans-serif"> </div> <h2>Test Email Message</h2> <p>?Must?ve been fate, you and I.?</p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin con= sectetur mauris ac placerat consequat. Nulla dictum libero mi, ac tempor neque tincidunt vitae. Quisque sagitti= s dignissim erat non accumsan. Cras eget mauris orci. Proin sed ullamcorper metus. Donec ut turpis vitae er= os consequat egestas vitae ac mi. Duis tristique ipsum dictum diam imperdiet, tempus sagittis ante ultric= ies. In hac habitasse platea dictumst. Sed consectetur imperdiet turpis, vel consequat ex malesuada vel. Inte= ger ut mauris metus. Phasellus eleifend sollicitudin est et posuere. Nam cursus sapien quis erat tincidunt= pharetra. Praesent id neque ut felis scelerisque aliquam. Nunc gravida ac erat quis dignissim. </p> </div> </body> </html> --0000000000002d8e4006346347a4--
求各位大佬给点解决思路!
内容来源于stack exchange
相关产品推荐
相关产品推荐

