如何更改nodemailer中的“from”字段?

免责声明:技术性的电子邮件方面,我不太擅长。

所以我build立了一个免费的zoho邮件账户,它基本上只是我的域名的邮件服务器。 这种有点通过mxlogging转发或什么的,我不完全确定它是如何工作的。

无论如何,重点是:每次使用我的帐户时,我都可以轻松地更改栏位。 因此,我的电子邮件地址foo@bar.com在大多数电子邮件客户端中显示为Foo from bar.com

现在,我想通过使用SSL通过SMTP将donotreply@bar.com帐户中的一些自动电子邮件发送到nodemailer(v1.10.0)。 我已经尝试了在文档/互联网上find的不同方法。 他们都刚刚抛出了一个模糊的堆栈轨迹(见下文)。

只要我停止试图改变从领域一切正常(除了从字段错误 )。 由于我不知道怎么回事,我正在寻求帮助解决这个问题。

我试着将createTransport()的第二个参数改为我想要的字段。 不工作。

 nodemailer.createTransport(auth.mail, {from: auth.mail.auth.user}); 

 nodemailer.createTransport(auth.mail, {from: 'Foo from bar.com'}); 

我试过设置auth.mail.from哪些也没有工作。 我已经尝试设置auth.mail.from传递第二个参数createTransport()


我的代码

 var nodemailer = require('nodemailer'); var auth = { mail: { host: 'smtp.zoho.com', port: 465, secure: true, auth: { user: 'donotreply@bar.com', pass: 'strongpassword' } }; var log = require('./log'); var transporter = nodemailer.createTransport(auth.mail, {from: auth.mail.auth.user}); function sendText(settings,cb) { transporter.sendMail(settings, function (err, info) { if (err) { log.warn('Failed to send an Email', err); } else { log.info('Successfully sent email', info); } if (cb) { cb(err, info); } }); } 

这里是我之前谈过的堆栈跟踪

 Message failed at SMTPConnection._formatError (c:\...\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:388:15) at SMTPConnection._actionStream (c:\...\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:948:30) at SMTPConnection.<anonymous> (c:\...\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:579:14) at SMTPConnection._processResponse (c:\...\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:511:16) at SMTPConnection._onData (c:\...\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:357:10) at emitOne (events.js:77:13) at TLSSocket.emit (events.js:169:7) at readableAddChunk (_stream_readable.js:146:16) at TLSSocket.Readable.push (_stream_readable.js:110:10) at TLSWrap.onread (net.js:523:20) 

from字段必须采用Display Name <email@address.com>的格式

 transporter.sendMail({ ..., from: 'Foo from @bar.com <donotreply@bar.com>' }); 

第一个例子,你可以看看nodemailer.com网站。

 var nodemailer = require('nodemailer'); // create reusable transporter object using the default SMTP transport var transporter = nodemailer.createTransport('smtps://user%40gmail.com:pass@smtp.gmail.com'); /*set from user in option*/ var mailOptions = { from: 'Fred Foo 👥 <foo@blurdybloop.com>', // sender address to: 'bar@blurdybloop.com, baz@blurdybloop.com', // list of receivers subject: 'Hello ✔', // Subject line text: 'Hello world 🐴', // plaintext body html: '<b>Hello world 🐴</b>' // html body }; transporter.sendMail(mailOptions, function(error, info){ if(error){ return console.log(error); } console.log('Message sent: ' + info.response); }); 

我有同样的问题, from:字段,我回去读Gmail的设置,这就是我发现 – 正如我所说,只有GMAIL。 我还没有尝试过不同的提供者。
src: nodemailer.com/usage/using-gmail/
客户端:Gmail

Gmail也始终将authentication用户名设置为发件人:电子邮件地址。 因此,如果您通过foo@example.com进行身份validation,并将bar@example.com设置为from:地址,那么Gmail将恢复此操作,并将该发件人replace为已通过身份validation的用户。

基本上,您只能在from:字段中指定经过身份validation的用户

谢谢,如果我错了,请让我知道