【问题标题】:Nodemailer with Gmail "From: address" does not change带有 Gmail“发件人:地址”的 Nodemailer 不会改变
【发布时间】:2017-06-26 13:54:51
【问题描述】:

我正在尝试向我的邮件列表中的任何新订阅者发送电子邮件。一切正常,但“发件人”电子邮件地址不会更改为“noreplay”。它仍然是我通过身份验证的电子邮件,在这种情况下是我的工作邮件。例如,如果我将“发件人”设置为“noreply@example .com”它从“jaafar@example.com”发送邮件。这是我的代码:

if (snapshot.child("subscribed").val() === 'true') {
  var value = snapshot.child("email").val(); //ignore this
  var key = snapshot.key;  //ignore this

  var mailHtml = val.htmlText1 + httpLink + key + val.htmlText2; //ignore this
  let mailOptions = {
   from: '"JaafarsCompany" <noreply@jaafarsCompany.io>', // sender address
   to: value, // list of receivers
   subject: 'Hello', // Subject line
   text: 'Hello world', // plain text body
   html: mailHtml //ignore this
  };

  // send mail with defined transport object
  mailTransport.sendMail(mailOptions, (error, info) => {
   if (error) {
     return console.log(error);
   }
  console.log('Mail sent to: ' + value + '. ' + 'Message %s sent: %s', info.messageId, info.response);
});

我只是建立在文档中的示例之上。收到的电子邮件好像来自“JaafarsCompany”,但如果您单击发件人名称,它会显示我的工作邮件。

希望这是有道理的。我正在寻找任何可以为我指明正确方向的东西。我觉得我已经在谷歌上搜索这个问题很久了:(

【问题讨论】:

  • 所以你上面的代码是可以的......如果不是你应该在你的答案中发布更正的版本
  • 代码没问题:-)

标签: node.js firebase google-cloud-functions nodemailer


【解决方案1】:

我发现了问题所在。基本上文档说:

Gmail 还始终将经过身份验证的用户名设置为 From: 电子邮件 地址。因此,如果您以 foo@example.com 身份进行身份验证并设置 bar@example.com 作为 from: 地址,然后 Gmail 将其还原并 用经过身份验证的用户替换发件人。

要解决此问题,需要在管理控制台中添加一个组。之后转到this 链接,然后按照说明进行操作。

Firebase 支持者帮助我解决了这个问题。希望有一天这对某人有所帮助:-)

【讨论】:

  • 你的答案我没有弄清楚。我有同样的问题。但在我的情况下,“发件人”地址会根据从数据库中获取的用户电子邮件动态变化。在那种情况下,可能是什么解决方案。
  • 嗯,很抱歉,但我不知道解决方案可能是什么。在我的情况下,“发件人”邮件是我自己,就好像我发送一个人邮件一样,但事实并非如此,所以我想将其更改为“no-reply@xxxxxx.com”
  • 您的回答对您自己的问题无效。您没有包括 gmail 仅允许最多 99 封电子邮件限制的事实。那么,如果有数百万个地址从那里发送呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-23
  • 2015-03-02
  • 2011-07-21
  • 2022-07-18
  • 1970-01-01
  • 2011-04-21
  • 2016-12-23
相关资源
最近更新 更多