Gmail主题

时间:2015-12-14 23:12:34

标签: google-apps-script gmail

我需要你的帮助。也许这是一个非常简单的错误,但我无法解决它。此代码非常适合创建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());
 }

问候,

1 个答案:

答案 0 :(得分:1)

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

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

=?表示行的开始和?=行。 ISO-8859-1?引用了charset。我不确定Q?

Q??=之间,您将收到主题信息。所有西班牙语字符都必须进行编码,例如。 'ElNiño'(小孩),必须写成:'El Ni = F1o'。 =F1ISO-8859-1字符集中的“ñ”对应的位置。

稍微研究一下,我还发现你可以在base64中对主题字符串进行编码,并将以下行添加到主题行:

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

在这种情况下,RWwgTmnDsW8=是由'ElNiño'编码的字符串。

第二种方法比第一种方法更容易(我在写完第一部分后发现它),尝试一下,看它是否适合你。