如何更改"来自" nodemailer中的字段?

时间:2015-11-27 03:49:43

标签: node.js nodemailer

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

所以我设置了一个免费的zoho mail帐户,它基本上只是我域名的邮件服务器。这种方式通过mx记录转发或其他方式起作用,我不完全确定它是如何工作的。

无论如何,关键是:我可以在每个Outlook使用我的帐户时轻松更改来自字段。因此,我的电子邮件地址foo@bar.com在大多数电子邮件客户端中显示为Foo from bar.com

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

一旦我停止尝试更改from字段,一切正常(除了来自字段的错误的)。由于我不知道该怎么回事,我要求帮助解决这个问题。

我尝试将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)

3 个答案:

答案 0 :(得分:22)

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

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

答案 1 :(得分:9)

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

  

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

基本上,您只能在from:字段

上指定经过身份验证的用户 谢谢,如果我错了,请告诉我

答案 2 :(得分:5)

您可以在nodemailer.com网站上查看的第一个示例。

TIFFSetField@LIBTIFF_4.0' usr/lib/libpq.so.5:
  undefined reference to