具有其他语言的html邮件模板中的问题

时间:2018-07-19 09:34:14

标签: html encode

我正在尝试将html代码作为主体传递给OneSignal服务。但是我的邮件中包含一些葡萄牙语内容,这些内容会转换为邮件中的其他符号。 如何将其转换为可读的葡萄牙语内容?

下面是代码,我如何在OneSignalService中传递正文:

var body = $scope.mailBody;    
body = body.replace("{HE_ID}", id).replace("{HE_Name}", name);    
body = $('<div></div>').append(body).html();    
OneSignalService.SendMail($scope.HE_StatusTitle, body, "abc@abc.com", "xyz@mailinator.com")

1 个答案:

答案 0 :(得分:0)

这可能是由于Web表单(由服务器发送的“ Content-type:”标头确定)与电子邮件中发送的字符之间的字符编码不匹配。后者可能由OneSignalService.SendMail()函数确定,我不知道。它可能正在发送Content-type邮件头,其编码与您在页面上所使用的编码不同,或者它可能根本不发送任何编码(在这种情况下,收件人电子邮件客户端将决定使用哪种编码)。

您的问题内容没有提供足够的信息来对确切发生的事情做出正确的猜测,但我建议以下内容:

  • 确保您的服务器在HTML标头中发送“ Content-Type:text / html; charset = utf-8”。

  • 检查邮件发件人(OneSignal)的配置,并确保将其设置为以“ utf-8”编码发送电子邮件(并发出适当的SMTP邮件标题)。

    < / li>
  • 还可以在<meta charset="utf-8">部分的<head>部分中,在具有邮件输入表单的HTML页面上以及在作为电子邮件发送的HTML中,添加var authEndpoint = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?"; var redirectUri = "http://localhost:8080"; var appId = "SomethingSomething"; var scopes = "openid profile User.Read Mail.Read Calendars.Read"; function getUserEvents(callback) { getAccessToken(function(accessToken) { if (accessToken) { // Create a Graph client var client = MicrosoftGraph.Client.init({ authProvider: done => { // Just return the token done(null, accessToken); } }); // Get the 10 newest events client .api("/me/events") .filter("startDateTime='2018-03-01'&endDateTime='2018-03-31'") .select("subject,start,end,createdDateTime") .orderby("createdDateTime DESC") .get((err, res) => { if (err) { callback(null, err); } else { callback(res.value); } }); } else { var error = { responseText: "Could not retrieve access token" }; callback(null, error); } }); } 。但是,不能保证仅靠这一点即可解决问题(浏览器将优先使用HTTP标头,并且可能会忽略“ meta”标记)。