有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Sendgrid电子邮件发送存在撇号字符问题?

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

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

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

有什么想法吗


共 (4) 个答案

  1. # 1 楼答案

    在标题中设置内容类型实际上不是将内容类型更改为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" );
    
  2. # 2 楼答案

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

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

  3. # 3 楼答案

    您必须以三个大括号传递subject变量,以便它将解析为文本而不是HTML 您可以这样传递-{{{subject}}}

    或者您可以再次跟随all the steps

    这个是为我工作的

  4. # 4 楼答案

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

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

    {{{recipient_name}}}

    而不是

    {{recipient_name}}

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

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