通过 Office365 smtp(MEANjs 脚手架)使用 nodemailer 发送电子邮件时出错
Posted
技术标签:
【中文标题】通过 Office365 smtp(MEANjs 脚手架)使用 nodemailer 发送电子邮件时出错【英文标题】:Error sending email using nodemailer via Office365 smtp (MEANjs scaffold) 【发布时间】:2015-06-30 23:18:01 【问题描述】:我正在尝试使用 Office365 SMTP 通过 Nodemailer(在 MEANjs 脚手架中)发送电子邮件,但我收到以下错误:
[Error: 140735277183760:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:795:]
我正在使用以下 Nodemailer 选项:
host: 'smtp.office365.com',
port: '587',
auth: user: 'xxxx', pass: 'xxxx' ,
secure: 'false',
tls: ciphers: 'SSLv3'
删除 tls 字段并没有什么不同。我错过了什么?
【问题讨论】:
【参考方案1】:解决方案很简单。 “安全”字段应为“安全连接”。生成配置的 MEANjs 脚手架使用“安全”字段创建了邮件选项。其余的选项都很好。对于需要有效的 Office365 SMTP 节点邮件程序选项块的任何人,以下应该可以工作:
host: 'smtp.office365.com',
port: '587',
auth: user: 'xxxx', pass: 'xxxx' ,
secureConnection: false,
tls: ciphers: 'SSLv3'
【讨论】:
当我尝试使用您提供的 opts 时,它不起作用并出现超时错误。我必须删除secureConnection
才能让它工作。谢谢!
非常感谢!就我而言,它适用于以下设置:"secure": false, "tls": "ciphers": "SSLv3"
【参考方案2】:
我知道这很旧,但如果有人在 2019 年查到这个,你可以添加
service: "Outlook365"
而且您不必指定连接选项。
Node Mailer Docs
let transporter = nodemailer.createTransport(
service: "Outlook365",
auth:
user: 'FROMUSER@office365.com',
pass: 'FROMUSERPASS'
,
)
let info = transporter.sendMail(
from: 'FROMUSER@office365.com',
to: 'TOUSER@office365.com',
subject: 'Test',
text: 'hello world',
html: '<h1>TEST</h1>'
)
【讨论】:
【参考方案3】:这个nodemailer 文档https://nodemailer.com/2-0-0-beta/setup-smtp/ 确实声明了options.secure 而不是options.secureConnection。它还表明,在一个示例中,options.secure 需要一个布尔值 true 或 false,而不是字符串值 'true'
或 'false'
。从'false'
周围删除''
对我有用。
【讨论】:
我是 *** 的新手。我想知道为什么对有效答案投反对票。 Simon H 所做的只是在一些文本周围放置了灰色框。当我的本意是帮助别人时,我很苛刻。【参考方案4】:我的问题是用户名和密码拼写正确,但创建后我没有登录帐户。所以我使用邮件程序(Thunderbird)登录一次,必须更改我的密码,然后我才能通过 Nodemailer 访问。
【讨论】:
以上是关于通过 Office365 smtp(MEANjs 脚手架)使用 nodemailer 发送电子邮件时出错的主要内容,如果未能解决你的问题,请参考以下文章
通过 Exchange Online (Office 365) 使用 System.Net.Mail 发送 SMTP 电子邮件
使用mail/mailx通过office365 SMTP发送邮件
在 Asp.Net 中使用 Office365 SMTP 时出错
使用带有 Laravel 的 Outlook / Office365 发送电子邮件 - 无法在 SMTP 服务器上进行身份验证