NodeMailer
刚开始学习MEAN, 搞个插件发个邮件。
NodeMailer貌似出镜率很高,用用。
https://nodemailer.com/smtp/
先申请了个个人的Outlook的邮箱,测试了一把,顺利通过。耶,好激动。
const nodeMailer = require('nodemailer');let mailOptions = { from: '"DisplayName"
let transporterExt = nodeMailer.createTransport({ host: 'smtp-mail.outlook.com', port: 587, secureConnection: false, auth: { user: 'messagesender@outlook.com', pass: 'jiubugaosuni', }, tls: { ciphers: 'SSLv3' } });
' + text + '
' };
transporterExt.transporter.sendMail(mailOptions, (error, info) => {
if (error) {
res.send({ hasError: true, msg: 'Failed to send mail.' + error.message });
return console.log('mail error', error);
}
console.log('Message %s sent: %s', info.messageId, info.response);
res.send({ hasError: false, msg: 'Mail Sent.' });
});
然后呢,试了几天以后,发现突然授权失败了,用网页一登陆outlook,发现被封号了,需要输入手机验证码登陆。
原来outlook不喜欢我这么发邮件,可能被认为成垃圾邮件的制造者了。
而且,感觉我的目的邮箱自从接收到outlook的邮件后,也确认莫名接收到过outlook垃圾邮件。
不管了,此路不通,换一条。
后来我就想,整个公司内部的邮箱吧,看着也正式一点。
于是参考了同事C#的代码。
MailMessage mail = new MailMessage(); mail.Subject = "AUTO TEST of Sending Emails"; mail.From = new MailAddress("地址随便写@域名.com", "显示名称随便写");
mail.To.Add("确实存在的目的邮箱地址"); mail.Body = "Testing Email"; mail.BodyEncoding = Encoding.UTF8; mail.IsBodyHtml = true; SmtpClient client = new SmtpClient(); client.Host = "smtp.公司内网域名.com"; client.Port = 25; client.Send(mail);
我去,居然连用户名密码都不用给,发送邮件的邮箱地址和名称可以随便写,不管存在与否,太爽啦。
经过反复尝试之后,下面的代码可以工作,太好啦。
let transporter = nodeMailer.createTransport({ host: 'smtp.公司内网域名.com', port: 25, tls: { //This config would open a connection to TLS server with self-signed or invalid TLS certificate rejectUnauthorized: false } });
毕竟是内网嘛,先不考虑安全性,完事儿,收工。
参考文献:
https://stackoverflow.com/questions/47595691/send-email-without-password-using-nodemailer-over-a-zimbra-smtp#