刚开始学习MEAN, 搞个插件发个邮件。
NodeMailer貌似出镜率很高,用用。
https://nodemailer.com/smtp/
先申请了个个人的Outlook的邮箱,测试了一把,顺利通过。耶,好激动。
const nodeMailer = require('nodemailer');
let transporterExt = nodeMailer.createTransport({host: 'smtp-mail.outlook.com',port: 587,secureConnection: false,auth: {user: 'messagesender@outlook.com',pass: 'jiubugaosuni',},tls: {ciphers: 'SSLv3'}});
let mailOptions = {
from: '"DisplayName"<real_address@xxx.com>',
to: '' + emailList,
subject: '' + subject,
text: '' + text,
html: '<p><h1>' + text + '</h1></p>'
};
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 certificaterejectUnauthorized: false}});
毕竟是内网嘛,先不考虑安全性,完事儿,收工。
参考文献:
https://stackoverflow.com/questions/47595691/send-email-without-password-using-nodemailer-over-a-zimbra-smtp#