const nodemailer = require('nodemailer');
const SMTPServer = require("smtp-server").SMTPServer;
const server = new SMTPServer({
onAuth(auth, session, callback) {
if (auth.username !== "test" || auth.password !== "password") {
return callback(new Error("Invalid username or password"));
}
console.log(mailOptions.text);
callback(null, {
user: "test"
}); // where 123 is the user id or similar property
}
});
server.on("error", err => {
console.log("Error %s", err.message);
});
server.listen(26);
var transporter = nodemailer.createTransport({
host: "MYDOMAINNAME/IP",
port: 26,
secure: false,
auth: {
user: "test",
pass: "password"
},
tls: {
rejectUnauthorized: false
}
});
var mailOptions = {
from: '"MYSITENAME"<info@MYDOMAIN.com>',
to: 'ADRESS@TLD.com',
subject: 'Sending Email using Node.js',
text: 'That was easy!'
};
transporter.sendMail(mailOptions, function (error, info) {
if (error) {
console.log("sendmail" + error);
} else {
console.log('Email sent: ' + info.response);
}
});
输出为: 那很简单! 已发送电子邮件:250 OK:消息已排队
我只想将带有输入变量的邮件作为文本从我的域名发送到普通的gmail地址; gmail /或其他地址确实收到了邮件;检查了垃圾邮件文件夹;
答案 0 :(得分:1)
对于谁遇到了同样的问题,但是使用Nodemailer的transporter
方式,我解决了这个问题,将服务器的name
添加到了运输对象中。
const transportObj = {
name: credentials.host, // in my case, the host and the name are the same
host: credentials.host,
port: credentials.port,
secure: true,
auth: {
user: credentials.user,
pass: credentials.pass
},
}
const transporter = nodemailer.createTransport(transportObj)
transporter.sendMail(...)
此解决方案与here相关
答案 1 :(得分:0)
我认为您可能只是在您的smtp-server
实例中排队该电子邮件,而不实际上发送该电子邮件。
documentation for smtp-server
首先是有关此模块如何实际不自行发送电子邮件的注释:
此模块本身不会发送任何电子邮件。
smtp-server
允许您使用SMTP或LMTP协议在端口25/24/465/587等上侦听,仅此而已。您自己的应用程序负责接受并将消息传递到目的地。
您需要将SMTP client module smtp-connection
与SMTP服务器结合使用来发送电子邮件。
您可以在服务器模块代码的this line看到“ 250 OK:消息已排队”响应的来源。