NodeMailer


刚开始学习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"',         to: '' + emailList,         subject: '' + subject,         text: '' + text,         html: '

' + 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#