用于Office 365直接发送的nodemailer 2.x配置

时间:2016-07-04 20:23:31

标签: office365 nodemailer

我使用nodemailer v2.4.2和node.js v4.4.7,我想通过我的Office 365 SMTP邮件服务器从我的服务器发送电子邮件。我使用带有此配置的smtpTransport v2.5.0:

var transporter = nodemailer.createTransport(smtpTransport({
  host: 'smtp.office365.com',
  port: 25, // have tried 465
  secureConnection: secure,
  auth: {
    user: username,
    pass: password
  },
  tls: {
    rejectUnauthorized: false // don't verify certificates
  },
  ignoreTLS: false // don't turn off STARTTLS support
}));

我已尝试指定authMethod LOGINPLAIN,但两者都没有任何区别。当我尝试发送电子邮件时出现错误:

[Error: Invalid login: 504 5.7.4 Unrecognized authentication type]
code: 'EAUTH',
response: '504 5.7.4 Unrecognized authentication type',
responseCode: 504

有没有人知道Office 365预期的授权类型以及我是否需要在nodemailer设置中指定任何不同的设置?

4 个答案:

答案 0 :(得分:18)

这对我有用:

    var transporter = nodemailer.createTransport({
        host: 'smtp.office365.com', // Office 365 server
        port: 587,     // secure SMTP
        secure: false, // false for TLS - as a boolean not string - but the default is false so just remove this completely
        auth: {
            user: username,
            pass: password
        },
        tls: {
            ciphers: 'SSLv3'
        }
    });

您可以添加:

    requireTLS: true

答案 1 :(得分:1)

答案非常晚,但如果您使用的是Office365的共享邮箱,则无法通过SMTP进行身份验证。我也遇到了这个错误然后意识到这一点。

有关此信息,请参阅Can Office365 shared mailbox use SMTP?

答案 2 :(得分:0)

var transporter = nodemailer.createTransport({
                  host: "smtpout.secureserver.net",
                  port: 587,
                  secureConnection: false,
                  secure: false,
                  requireTLS: true,
                  auth: {
                    user: emailUsr,
                    pass: emailPass
                  },
                  tls: {
                    rejectUnauthorized: false
                  }
                });

您可以尝试使用此配置

答案 3 :(得分:0)

在我的场景中,我必须确保电子邮件字段 From 使用的电子邮件地址与我用于邮箱登录的电子邮件地址相同 - 在位于 optionsauth.user 对象中。

这种方式,前提是我使用了 STARTTLS 的 TLS 详细信息,例如auth.user.secure: falserequireTLS: truetls.ciphers: 'SSLv3',我设法用 Nodemailer 发送了一封电子邮件。