刚开始学习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 certificate rejectUnauthorized: false } });
毕竟是内网嘛,先不考虑安全性,完事儿,收工。
参考文献:
https://stackoverflow.com/questions/47595691/send-email-without-password-using-nodemailer-over-a-zimbra-smtp#