javascript - 如何通过 Gmail API 在 JavaScript 中发送带有附件的邮件

标签 javascript email gmail-api

我正在尝试通过 Gmail API 发送带有附件的邮件。

我已成功发送邮件,如下所示:

function sendmail(to, subject, message) {
    var email =
        "To: " + to + "\r\n" +
        "Subject: " + subject + "\r\n" +
        'Content-Transfer-Encoding: 8bit\r\n' +
        'Content-Type: text/html; charset="UTF-8"\r\n' +
        "" +
        message + "\r\n\r\n";
    var sendRequest = gapi.client.gmail.users.messages.send({
        'userId': 'me',
        'resource': {
            'raw': window.btoa(unescape(encodeURIComponent(email))).replace(/\+/g, '-').replace(/\//g, '_')
        }
    });

    sendRequest.execute();
}

现在我想发送一些文件作为附件并尝试以下方式:

<input id="inputFile" type="file" onChange="convertToBase64();"/>
<script>
    var file_ = '';

    function convertToBase64() {
        //Read File
        var file = document.getElementById("inputFile").files[0];
        var reader = new FileReader();
        reader.onload = function () {
            file_ = reader.result.split('base64,')[1];
        };
        reader.onerror = function (error) {
            console.log('Error: ', error);
        };
        reader.readAsDataURL(file);
    }

    function sendmail(to, subject, message, date) {
        console.log(date);

        if (typeof file_ !== "undefined" && file_ != '') {
            var email =
                "To: " + to + "\r\n" +
                "Subject: " + subject + "\r\n" +
                'Content-Transfer-Encoding: 8bit\r\n' +
                'Content-Type: text/html; charset="UTF-8"\r\n' +
                "" +
                message +
                "\r\n\r\n" +
                "--foo_bar_baz\r\n" +
                "Content-Type: application/pdf\r\n" +
                "MIME-Version: 1.0\r\n" +
                "Content-Disposition: attachment; filename=example.pdf\r\n\r\n" +
                file_ + "\r\n\r\n";
            var sendRequest = gapi.client.gmail.users.messages.send({
                'userId': 'me',
                'resource': {
                    'raw': window.btoa(unescape(encodeURIComponent(email))).replace(/\+/g, '-').replace(/\//g, '_')
                }
            });

            sendRequest.execute();
        } else {
            alert('boo');
        }
    }
</script>

我会收到邮件,但我看不到任何文本,并且由于“编码错误!”而无法打开文件。

我确实检查了整个 gmail 文档,但没有结果。

有人可以帮我吗?

最佳答案

您是否尝试过:内容传输编码:base64

我在某处读到,将 pdf 编码为 base64 需要您相应地设置内容传输编码。

关于javascript - 如何通过 Gmail API 在 JavaScript 中发送带有附件的邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47283578/

相关文章:

javascript - 如何使用 redux-toolkit 配置 redux-persist?

javascript - preventDefault() 第一次触摸但仍然允许滚动/触摸移动

javascript - C# 和 javascript 之间的 ECDH

c# - 电子邮件的显示选项

php - 电子邮件发送正常,但我收到消息 $body 未定义?

node.js - 我想通过 Google Cloud Pub/Sub API 获取新的 Gmail 通知

c# - AngularJS 下拉列表在选择项目后丢失内容

android - 以电子邮件地址作为目标的 SmsManager - NullPointerException

python - 使用 Gmail API 发送大附件时出现错误 10053

javascript - nodejs 如何获取gmail原始消息?