如何更改nodemailer中的"from"字段?

boo*_*oop 19 node.js nodemailer

免责声明:我对技术电子邮件方面不太满意.

所以我建立了一个免费的zoho邮件帐户,它基本上只是我域名的邮件服务器.这种工作通过mx记录转发或其他东西,我不完全确定它是如何工作的.

无论如何,关键是:我可以在每个Outlook使用我的帐户时轻松更改来自字段.所以我的电子邮件地址foo@bar.comFoo from bar.com大多数邮件客户端一样.

现在我想发送一些电子邮件自动从我的donotreply@bar.com账户nodemailer(v1.10.0)通过SMTP使用SSL.我尝试过在文档/互联网上找到的不同方法.他们所有人都抛出了一个暧昧的堆栈痕迹(见下文).

一旦我停止尝试更改from字段,一切正常(除了字段中的错误).因为我不知道什么事情,我要求帮助解决这个问题.

我已经尝试将第二个参数更改createTransport()为我想要的字段.不工作.

nodemailer.createTransport(auth.mail, {from: auth.mail.auth.user});
Run Code Online (Sandbox Code Playgroud)

nodemailer.createTransport(auth.mail, {from: 'Foo from bar.com'});
Run Code Online (Sandbox Code Playgroud)

我试过设置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);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

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

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)
Run Code Online (Sandbox Code Playgroud)

boo*_*oop 24

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

transporter.sendMail({ ..., from: 'Foo from @bar.com <donotreply@bar.com>' });
Run Code Online (Sandbox Code Playgroud)


Vic*_*B-A 9

我在该from:领域遇到了同样的问题,我回去阅读gmail设置,这就是我发现的 - 正如我所说,只有GMAIL.我还没有尝试过其他提供商.
src:nodemailer.com/usage/using-gmail/
客户端:Gmail

Gmail还始终将经过身份验证的用户名设置为来自:电子邮件地址.因此,如果您通过foo@example.com进行身份验证并将bar@example.com设置为from:地址,则Gmail会将其恢复,并将该发件人替换为经过身份验证的用户.

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

谢谢,如果我错了,请告诉我


xde*_*akv 5

您可以在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);
});
Run Code Online (Sandbox Code Playgroud)