使用Gmail API和Javascript发送HTML格式的电子邮件

时间:2017-02-10 14:52:45

标签: javascript html email gmail-api

以下JavaScript代码通过Gmail API成功发送电子邮件。但是,表格格式,特别是表格和列(单元格)宽度设置似乎被忽略。

function sendMail(email) {
    var to = email;
    var subject = "HTML formatted email";
    var content = "";
    content += "<html><body>";
    content += "<table width='100%'><tr><td>"; // Outer table
    content += "<table width='60%'>"; // Nested table
    content += "<tr><td width='70%'>This is a row</td><td width='30%'>999999</td></tr>";
    content += "<tr><td width='70%'>So is this</td><td width='30%'>9999</td></tr>";
    content += "</table>";
    content += "</td></tr></table>";
    content += "</body></html>";
    var email =
            "From: 'me'\r\n" +
            "To: " + to + "\r\n" +
            "Subject: " + subject + "\r\n" +
            "Content-Type: text/html; charset=utf-8\r\n" +
            "Content-Transfer-Encoding: quoted-printable\r\n\r\n" +
            content;
    var base64EncodedEmail = window.btoa(email).replace(/\+/g, "-").replace(/\//g, "_");
    var request = gapi.client.gmail.users.messages.send({
        "userId": "me",
        "resource": {
            "raw": base64EncodedEmail
        }
    });
    request.execute();
}

电子邮件信息如下:

This is a row 999999
So is this    9999

我发送的有关发送HTML格式的电子邮件的所有内容都说使用嵌套表格和内联样式。为什么我的宽度样式不起作用?

1 个答案:

答案 0 :(得分:4)

经过大量的搜索,实验和测试后,我终于发现我需要将content-transfer-encoding值设置为base64:

var email =
        "From: 'me'\r\n" +
        "To: " + to + "\r\n" +
        "Subject: " + subject + "\r\n" +
        "Content-Type: text/html; charset='UTF-8'\r\n" +
        "Content-Transfer-Encoding: base64\r\n\r\n" +
        "<html><body>" +
        content +
        "</body></html>";

希望这可以节省其他类似问题。