2

尝试使用带有 java 的 sendgrid 发送电子邮件。撇号字符看起来像?问号。我正在发送标头以将文本编码为 UTF-8,但它仍然是一个问号。

mailMessage.setHeaders("{'text':'UTF-8'}");

上面的行没有效果。我确信我拥有的输入 HTML 字符串是 UTF-8 编码的。电子邮件客户端是 MS Outlook 2010

有任何想法吗?

4

4 回答 4

2

在标头中设置内容类型实际上并不是将内容类型更改为 UTF-8 的正确方法。您需要在BodyPart. 例如:

// Create a message part to represent the body text 
BodyPart messageBodyPart = new MimeBodyPart(); 
messageBodyPart.setContent( "<strong>some html content</strong>", "text/html; charset=utf-8" );
于 2013-04-04T15:35:43.337 回答
2

我知道这个答案对你来说已经晚了 6.5 年,但是由于这个问题仍然存在于人们身上,而且这篇文章在谷歌搜索中出现的很高,我想我会提供一个替代解决方案。

在 SendGrid 中的模板本身上,您可以通过使用三重大括号而不是双大括号来简单地转义这些有问题的字符。IE

{{{收件人姓名}}}

代替

{{收件人姓名}}

此解决方案隐藏在 SendGrid 文档的内部:

https://github.com/sendgrid/sendgrid-nodejs/blob/master/packages/helpers/constants/index.js

于 2019-11-11T10:24:46.640 回答
1

您是否从 MS Word 中复制并粘贴了内容?

某些字符不会在 html 中呈现。您可以通过简单地在文本编辑器中重新输入来手动替换所有撇号字符,它将用标准的垂直撇号替换 MS Word 倾斜撇号,或者如果您希望它们保持倾斜,您可以使用&ldquo;&rdquo;

于 2013-04-04T16:46:00.720 回答
1

您必须在三重花括号中传递您的主题变量,以便它将解析为文本而不是 HTML,您可以像这样传递它 - {{{subject}}}

或者您可以再次执行所有步骤

这个对我有用。

于 2019-11-11T11:32:35.067 回答