【问题标题】:Keep getting Bounce message when using Gmail API使用 Gmail API 时不断收到退回邮件
【发布时间】:2016-03-24 01:23:38
【问题描述】:

我尝试使用 gmail API 从节点应用程序发送电子邮件。这是我的代码:

function sendEmail(auth) {
    var gmail = google.gmail('v1');
    gmail.users.messages.send({
        auth,
        userId: 'me',
        resource: {
            payload: {
                mimeType: 'message/rfc822',
                headers: [{name: 'To', value: 'ayeritsian@gmail.com'},
                    {name: 'Subject', value: 'test'},
                    {name: 'From', value: 'ayeressian2@gmail.com'}]
            },
            raw: new Buffer('test123').toString('base64')
        },
        internalDate: Date.now()
    }, function (err, bla, IncommingMessage) {
        console.log(arguments);
        console.log('end');
    });
}

当我运行应用程序时,我不断收到弹跳消息“发生错误。您的消息未发送。”。错误消息描述性不够,几乎没有 google-api 节点包的文档。如果有人可以帮助我,我将不胜感激。

【问题讨论】:

  • Eric 在下面回答您的问题。 Look at this answer 如果您只想使用常规的 http 请求。

标签: node.js email google-api gmail-api


【解决方案1】:

您需要将整个电子邮件放在消息的“原始”字段中,解析出的消息不适用于发送。参考文献https://developers.google.com/gmail/api/guides/sending

这类似于 python,我相信你可以翻译成 node.js :) email = "From: myemail@gmail.com\r\nTo: someguy@gmail.com\r\nSubject: hey check this out\r\n\r\nhi someguy, this is my email body here. it's plain text." message.raw = base64_websafe(email)

【讨论】:

  • 您能详细说明一下吗?我的电子邮件是 test123,我已经输入了原始字段。我也尝试过不转换为 base64,但仍然出现相同的错误。
  • 需要将整个电子邮件(标头和正文(RFC2822 格式))放在原始字段中,base64 url​​/web 编码。更新了我的答案以提供一个简单的示例。
【解决方案2】:

无论如何,我遇到了与您类似的问题。我一直在我的应用程序/用户的收件箱中收到一条模糊的错误消息。

From: nobody@gmail.com
An error occurred. Your message was not sent.

为我解决问题的方法是将 Message-ID 属性添加到我创建的缓冲区中。基本上,我的消息不是根据他们在文档here 中提到的 rfc822 规范编写的。 ?

Here is the document I referenced 及以下是我的 sn-p。

module.exports = function (policyMeta) {
  log.info('BUILDING EMAIL');
  const message = 'From: xxx@xxx.com\r\n' +
                  'To: xxx@xxx.com\r\n' +
                  `Date: ${new Date()}\r\n` +
                  'Subject: Howdy Mundo\r\n' +
                  `Message-ID: ${uuid()}\r\n` +
                  'look mom i send a message';
  const params = {
    auth: Auth.getGoogleAuthClient(),
    userId: 'me',
    media: { mimeType: 'message/rfc822' },
    resource: {
      raw: new Buffer(message).toString('base64')
    }
  };
  return sendEmail(params).then((res) => console.log(res, '??success??'));
};

【讨论】:

    猜你喜欢
    • 2017-03-21
    • 2016-06-03
    • 2018-05-06
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多