nodemailer使用授权码和不用授权码的两种方式

写在最前方: 之所以用这个标题,是因为肯定会有初学者在使用nodemailer的点点困惑,当使用邮箱密码去发送的时候,难免会报各种错 开启了SMTP的使用方式 首先一定要开启SMTP服务,怎么开启不多说,各个第三方提供商的方式都不一样
一般都在对应的web mail网站上的设置里

yarn add nodemailer or npm i -S nodemailer

const nodemailer = require('nodemailer'); const mailTransport = nodemailer.createTransport({ host : 'smtp.example.com', secure: true, // 使用SSL方式(安全方式,防止被窃取信息) auth : { user : '你的邮箱地址', pass : '你的邮箱授权码' }, }); const mailOptions = { from: '"JavaScript之禅" ', // sender address to: 'example@efd.com.cn', // list of receivers subject: 'Hello', // Subject line // 发送text或者html格式 // text: 'Hello world?', // plain text body html: 'Hello world?' // html body }; transporter.sendMail(mailOptions, (error, info) => { if (error) { return console.log(error); } console.log('Message sent: %s', info.messageId); // Message sent: <04ec7731-cc68-1ef6-303c-61b0f796b78f@qq.com> });

没有开启SMTP的方式 这个非授权码方式只是我随便取的, 因为公司的邮件服务器,不知道为什么,采用上面的方式会报错,
{ [Error: 11432:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:c:\ws\deps\openssl\openssl\ssl\record\ssl3_record.c:332: ] code: 'ECONNECTION', command: 'CONN' }

这个我第一反应就是, 我端口错了吗?,然后把secure设置为false,现在的报错形式为:
Host: smtp.3nod.com.cn. is not in the cert\'s altnames: DNS:mail.cuchost.com, DNS:autodiscover.cuchost.com, DNS:cp.cuchost.com, DNS:attachment.cuchost.com, DNS:webapp.cuchost.com

大意就是邮件服务器不在(CA)证书名单之内,WHAT?然后各种百度,找到了如下解释
https://cnodejs.org/topic/5a803771497a08f571384fd7 链接在这里

不看链接的请看这里
{ host : 'smtp.example.com', secure: false, // 设置为false auth : { user : '你的邮箱地址', pass : '你的邮箱密码' }, tls: { rejectUnauthorized: false }, },

2020/05/09更新~~~~~~~~~
时隔这么久, 重新再用这个nodeMailer, 本地测试是行得通的, 但是linux服务器25端口是会严格把控的, 这时可以换一个端口, 这么写:
{ host: 'smtp.xxxx.com', port: 465, secure: true, // 设置为true auth: { user: 'oms@xxxx.com', pass: 'xxxxx', // 类似qq这些, 需要授权码, 一般其它的企业邮箱, 不需要授权码(比如阿里邮箱, 应该) }, tls: { rejectUnauthorized: false, // 拒绝认证就行了, 不然会报证书问题 }, }

【nodemailer使用授权码和不用授权码的两种方式】有些邮件服务提供商的pass是需要授权码的, 比如qq, 这时的pass就应该是你的qq授权码, 而不是密码!
谢谢观看!!!

    推荐阅读