2015-12-14 31 views
0

我需要您的幫助。也許這是一個非常簡單的錯誤,但我解決不了。此代碼非常適合創建Gmail草稿。但是我在西班牙文中遇到了問題:á,é,í,ó,ú,ñ。 HTML Body正常工作,它可以識別這些字符(á,é,í,ó,ú,ñ)。Gmail主題中的西班牙字符問題(á,é,í,ó,ú,ñ)

我相信我需要把代碼「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 <[email protected]>\r\n' + 
     'To: You <[email protected]>\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

我做了一些測試,發現當你發送這些字符的電子郵件,它增加了以下主題行:

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

=?指示啓動和?=行結束。 ISO-8859-1?提到字符集。我不確定Q?

Q??=之間,您將收到主題消息。所有的西班牙字符都必須進行編碼,例如。 'ElNiño'(孩子)必須寫成:'El Ni = F1o'。其中=F1對應於ISO-8859-1字符集中的'ñ'。

調查多一點點,我也發現了,你可以編碼以base64目標字符串並將以下行添加到主題行:

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

在這種情況下RWwgTmnDsW8=是編碼厄爾尼諾的」串厄爾尼諾」。

第二種方法比第一種方法更容易(我在寫完第一部分後發現它),嘗試一下,看看它是否適用於您。

+0

感謝您的幫助,@Gerardo:D !!!它最初不起作用,因爲我沒有用base64編碼主題。現在,它正在工作。問候。 – user2946433