在Google Apps脚本中创建电子邮件 - 无法创建ä,ö,ü等特殊字符

时间:2015-12-21 18:00:47

标签: google-apps-script email-integration

我对以下脚本有疑问。

function doGet() {
     //Create draft email
     var body = "Project ö";
     var subject = "Subject ö";

  var forScope = GmailApp.getInboxUnreadCount(); // needed for auth scope

  var raw = 
      'Subject: ' + subject + '\n' + 
      'To: ' + "test@test.com" + '\n' +
      'Content-Type: multipart/alternative; boundary=1234567890123456789012345678\n' +
      '' + body + '\n' + 
      '--1234567890123456789012345678--\n';

       var draftBody = Utilities.base64Encode(raw, Utilities.Charset.UTF_8);


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

问题是某些在德语中很重要的特殊字符(“ä,ö,ü...”)未正确传输到生成的草稿电子邮件。

在电子邮件草稿中,字符“ö”将转换为“¶”。主体和身体都是一样的。

如何告诉Google Apps脚本创建正确的字符?

1 个答案:

答案 0 :(得分:3)

以下是通过将短语$(document).ready(function() { $('div#mini-header').hide(); }); 邮寄给自己而收到的原始电子邮件正文的示例:

German language ("ä, ö, ü ...")

将其与您的代码进行比较,您似乎忘记在邮件中设置MIME-Version: 1.0 Reply-To: me@example.com Sender: me@example.com Received: by x.x.x.x with HTTP; Mon, 21 Dec 2015 20:29:36 -0800 (PST) Date: Mon, 21 Dec 2015 23:29:36 -0500 Delivered-To: me@example.com X-Google-Sender-Auth: F53iraIGVkzcvVsK_xQusL1FB9Q Message-ID: <CADiaKr4qDq8Anp4C0BymXC411nc0LtcVMrhTrQ6qErO00hB4CQ@mail.gmail.com> Subject: german From:Me <me@example.com> To: Me <me@example.com> Content-Type: multipart/alternative; boundary=94eb2c06bef09d6d1c0527750dfe --94eb2c06bef09d6d1c0527750dfe Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable German language ("=C3=A4, =C3=B6, =C3=BC ...") --94eb2c06bef09d6d1c0527750dfe Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:arial,he= lvetica,sans-serif"><span style=3D"color:rgb(34,36,38);font-family:Arial,&#= 39;Helvetica Neue&#39;,Helvetica,sans-serif;font-size:15px;line-height:19.5= px">=C2=A0German language (&quot;=C3=A4, =C3=B6, =C3=BC ...&quot;)</span><b= r></div></div> --94eb2c06bef09d6d1c0527750dfe-- ,因此默认为US-ASCII。

您需要与读者的电子邮件客户端沟通他们需要使用哪种编码来解释邮件,这是作为电子邮件相关部分的内容类型元数据的一部分完成的。

这样的事情:

charset

假设您只发送纯文本电子邮件。如果您还要发送HTML部分,那么它还需要自己的var raw = 'Subject: ' + subject + '\n' + 'To: ' + "test@test.com" + '\n' + 'Content-Type: multipart/alternative; boundary=1234567890123456789012345678\n\n' + '--1234567890123456789012345678\n'; 'Content-Type: text/plain; charset=UTF-8\n' + 'Content-Transfer-Encoding: quoted-printable\n' + '' + body + '\n' + '--1234567890123456789012345678--\n'; 元标记,如果您需要其他编码,则可能会有所不同。