使用nodemailer发送邮件一直困惑了我好几天,百度谷歌都没有找到的几个问题,方便大家排查。
我使用的是0.7.1版本,其他的版本好像报错,就没用。
错误信息:Mail from command failed - 501 mail from address must be same as authorization user
经检查问题出现在第12行代码,这里必须要填写发件人的邮箱地址,因为我以为第7行已填写过邮箱地址,错以为第12行只要随便写个名称,所以一直报错。
如果需要加上名称用<>把邮箱包住,如:carter<carter@mingbomedia.com>
以下为可运行代码:
1 var nodemailer = require("nodemailer"); 2 var transport = nodemailer.createTransport('SMTP', { 3 host: "smtp.tq52.com", 4 secureConnection: true, 5 port: 465, 6 auth: { 7 user: "lele@tq52.com", // 账号 8 pass: "********" // 密码 9 } 10 }); 11 var data = { 12 from: 'lele@tq52.com', 13 to: '308012546@qq.com', 14 subject: 'Hello world', 15 text: 'Hello world, I am a test mail!', 16 html: '<b>Hello world, I am a test mail!</b>' 17 }; 18 transport.sendMail(data, function(err, res){ 19 if (err) { 20 console.log(err); 21 } else { 22 console.log('Message sent: ' + res.message); 23 } 24 transport.close(); // 如果没用,关闭连接池 25 });
如果采用如下service的方式去写,修改service的文件路径在node_modules/nodermailer/lib/wellknown.js。
1 var transport = nodemailer.createTransport('SMTP', { 2 service: 'qq', //use well known service 3 auth: { 4 user: 'hankewins@qq.com', 5 pass: '123456' 6 } 7 });