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

5
以下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格式的电子邮件消息时,我所查阅的所有资料都建议使用嵌套表格和内联样式。为什么我的宽度样式不起作用?


尝试去掉“%”符号。width='400' 应该就可以了。 - dokgu
1个回答

10
经过长时间的搜索、尝试和测试,我最终发现需要将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>";

希望这能够帮到其他有类似问题的人,节省他们的时间。

内容传输编码的更改对我很有帮助,挽救了我的一天。 - PHP CODER
哇,我的英雄,救了我很多,你也试过添加附件吗?那是我的下一个障碍。 - WtFudgE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接