Gmail 主题中的西班牙字符(á、é、í、ó、ú、ñ)问题

Problems with Spanish Characters (á, é, í, ó, ú, ñ) in the Gmail subject

我需要你的帮助。也许这是一个非常简单的错误,但我无法解决。此代码非常适合创建 Gmail 草稿。但我对西班牙语字符有疑问:主题中的 á、é、í、ó、ú、ñ。 HTML 主体工作正常,它可以识别这些字符(á、é、í、ó、ú、ñ)。

我认为我需要将代码 "charset=UTF-8" 放在一些特殊的方面。你有什么建议?

function createHTMLDraftInGmail() {

 var forScope = GmailApp.getInboxUnreadCount(); // needed for auth scope
 var htmlBody = "<p>Hello, I am an HTML message</p><hr>";
 var raw = 'From: Me <amit@labnol.org>\r\n' +
        'To: You <hello@example.com.com>\r\n' +
        'Subject: Save Draft Message\r\n' +
        'Content-Type: text/html; charset=UTF-8\r\n' + 
        '\r\n' + htmlBody;

var draftBody = 
Utilities.base64Encode(raw,Utilities.Charset.UTF_8).replace(/\//g,'_').replace(/\+/g,'-');

var params = {
method      : "post",
contentType : "application/json",
headers     : {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
muteHttpExceptions:true,
payload:JSON.stringify({
  "message": {
    "raw": draftBody
  }
})
};

var resp =
  UrlFetchApp.fetch("https://www.googleapis.com/gmail/v1/users/me/drafts", params);
 Logger.log(resp.getContentText());
 }

你好,

我做了一些测试,发现当您发送包含这些字符的电子邮件时,它会在主题行中添加以下内容:

=?ISO-8859-1?Q?  ?=

=?表示行首,?=表示行尾。 ISO-8859-1? 引用字符集。我不确定 Q?.

Q??= 之间,您将看到您的主题消息。所有西班牙语字符都必须进行编码,例如。 'El Niño'(孩子),则必须写成:'El Ni=F1o'。其中 =F1 对应于 ISO-8859-1 字符集中的“ñ”。

进一步调查,我还发现您可以使用 base64 对主题字符串进行编码,并将以下行添加到主题行:

=?UTF-8?B?RWwgTmnDsW8=?=

在这种情况下 RWwgTmnDsW8= 是 'El Niño' 编码的字符串。

第二种方法比第一种方法简单(我写完第一部分后发现的),试试看是否适合你。