我尝试编写简单的邮件程序,只是为了使用nodemailer发送一些文本(用于测试目的)。如果我理解得很好,可以通过smtp或直接发送邮件。起初我想用DIRECT方法发送。
下一个代码非常简单:
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({direct:true,
host: 'smtp.yandex.ru',
port: 465,
auth: {
user: 'login@yandex.ru',
pass: 'password' },
secure: true
});
var mailOptions = {
from: 'nworksheet@gmail.com',
to: 'sky-bell@mail.ru',
subject: 'Hello',
text: 'This is auto mail sending'
};
transporter.sendMail(mailOptions, function (error, info) {
if(error) {
return console.log(error);
}
console.log("Message sent "+info.response)
});
但我有下一个错误:
{ Error: Sending failed
at QueryReqWrap.asyncCallback [as callback] (dns.js:65:16)
at QueryReqWrap.onresolve [as oncomplete] (dns.js:216:10)
errors:
[ { Error: queryMx ENOTFOUND mail.ru
at errnoException (dns.js:28:10)
at QueryReqWrap.onresolve [as oncomplete] (dns.js:216:19)
code: 'ENOTFOUND',
errno: 'ENOTFOUND',
syscall: 'queryMx',
hostname: 'mail.ru' } ] }
这是什么意思?怎么解决?节点看不到'mail.ru'?为什么呢?
答案 0 :(得分:0)
看起来它无法找到mail.ru的MX记录。但它似乎存在。 https://toolbox.googleapps.com/apps/dig/#MX/mail.ru
这台机器是否正确设置了DNS?你能从那台机器上挖出来吗?
答案 1 :(得分:0)
实现这一目标的最佳方法是
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
service: 'Yandex',
auth: {
user: 'your_yandex_email',
pass: 'your_password_for_email' },
});
var mailOptions = {
from: 'your_yandex_email',
to: 'sky-bell@mail.ru',
subject: 'Hello',
text: 'This is auto mail sending'
};
transporter.sendMail(mailOptions, function (error, info) {
if(error) {
return console.log(error);
}
console.log("Message sent "+info.response)
});
每当您指定 service 命令时,它都会自动设置端口并保护电子邮件。 还要记住从配置文件中放入和获取凭据。