ton*_*227 8 node.js nodemailer
我想在本地服务器上发送邮件,但似乎无法使用Nodemailer和NodeJS.
有没有解决方案从本地发送邮件?
var contact = {subject: 'test', message: "test message", email: 'visitor@gmail.com'};
var to = "myemail@gmail.com";
var transporter = nodemailer.createTransport();
transporter.sendMail({
from: contact.email,
to: to,
subject: contact.subject,
text: contact.message
});
Run Code Online (Sandbox Code Playgroud)
suc*_*ool 11
const transporter = nodemailer.createTransport({
port: 25,
host: 'localhost',
tls: {
rejectUnauthorized: false
},
});
var message = {
from: 'noreply@domain.com',
to: 'whatever@otherdomain.com',
subject: 'Confirm Email',
text: 'Please confirm your email',
html: '<p>Please confirm your email</p>'
};
transporter.sendMail(message, (error, info) => {
if (error) {
return console.log(error);
}
console.log('Message sent: %s', info.messageId);
});
Run Code Online (Sandbox Code Playgroud)
我目前正在通过 express.js 上的一个安静的 api 触发这个
这应该有效,我用它来设置我在 digitalocean 上的后缀:https : //www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-smtp -server-on-ubuntu-16-04
che*_*iel -6
从本地服务器运行应该不是问题。
看起来您正在使用直接传输,文档中对此进行了描述:
...不可靠,因为默认情况下使用的传出端口 25 通常被阻止。此外,从动态地址发送的邮件通常被标记为垃圾邮件。您确实应该考虑使用 SMTP 提供商。
一种解决方案是定义 SMTP 传输:
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'sender@gmail.com',
pass: 'password'
}
});
Run Code Online (Sandbox Code Playgroud)
这里还有其他解决方案,例如使用传输插件。
无论如何,当您不向 sendMail 函数添加回调时,很难诊断您的问题。当你发送邮件时,这样做,然后你可以检查控制台,看看可能是什么错误:
transporter.sendMail({
from: contact.email,
to: to,
subject: contact.subject,
text: contact.message
}, function(error, info){
if(error){
console.log(error);
}else{
console.log('Message sent: ' + info.response);
}
});
Run Code Online (Sandbox Code Playgroud)