我需要你的帮助。也许这是一个非常简单的错误,但我无法解决它。此代码非常适合创建Gmail草稿。但是我对西班牙语字符有问题:á,é,í,ó,ú,ñ在这个主题中。 HTML Body工作正常,它识别这些字符(á,é,í,ó,ú,ñ)。
我认为我需要将代码“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());
}
问候,
答案 0 :(得分:1)
我做了一些测试,发现当您发送包含这些字符的电子邮件时,会在主题行中添加以下内容:
=?ISO-8859-1?Q? ?=
=?
表示行的开始和?=
行。 ISO-8859-1?
引用了charset。我不确定Q?
。
在Q?
和?=
之间,您将收到主题信息。所有西班牙语字符都必须进行编码,例如。 'ElNiño'(小孩),必须写成:'El Ni = F1o'。 =F1
与ISO-8859-1字符集中的“ñ
”对应的位置。
稍微研究一下,我还发现你可以在base64中对主题字符串进行编码,并将以下行添加到主题行:
=?UTF-8?B?RWwgTmnDsW8=?=
在这种情况下,RWwgTmnDsW8=
是由'ElNiño'编码的字符串。
第二种方法比第一种方法更容易(我在写完第一部分后发现它),尝试一下,看它是否适合你。