我正在使用nodemailer从联系表单发送自己的电子邮件作为我的应用程序的一部分。我将它设置为SendPulse作为SMTP服务器。我想像这样创建消息:
const transporter = nodemailer.createTransport(
{
service: 'SendPulse',
auth: {
user: 'myemail@myemail.com',
pass: 'mypassword'
}
}
);
app.post('/send-message', (req, res) => {
transporter.sendMail(
{
from: req.body.email,
to: 'myemail@myemail.com',
subject: req.body.subject,
text: req.body.message,
html: `<p>${req.body.message}</p>`
},
(err, info) => {
if (err) {
res.send(err);
} else {
res.send(info);
};
}
);
});
问题是除非req.body.email
与在传输器上注册的myemail@myemail.com
相同,否则我会收到错误:
{
code: "EENVELOPE",
response: "554 5.9.2 Sender domain is not valid.",
responseCode: 554, command: "MAIL FROM"
}
有什么办法可以将from
属性设置为联系表单中输入的内容吗?
答案 0 :(得分:0)
这意味着在电子邮件发送过程中,通过SendPulse验证,发件人电子邮件地址的域无效。
这可能是由于您域的DNS中缺少配置引起的。您可能缺少SPF记录。
创建一个SPF记录,以便更多的电子邮件到达收件人的收件箱。接收邮件服务器将使用SPF记录来确认电子邮件是从您的域发送的。
您应将TXT
记录添加到您域中的DNS设置中,作为described here并具有以下值:
v=spf1 include:mxsmtp.sendpulse.com +a +mx ~all
如果它不起作用,请确保允许您发送电子邮件,因为在您通过验证之前,您的帐户可能无法发送电子邮件。
联系SendPulse支持以了解详情。
答案 1 :(得分:0)
遇到相同问题后。我切换到此解决方案。使用npm包使用了sendPulse API。
下面是代码和链接
var sendpulse = require("sendpulse-api");
/*
* https://login.sendpulse.com/settings/#api
*/
var API_USER_ID = "USER_ID";
var API_SECRET = "USER_SECRET";
var TOKEN_STORAGE = "/tmp/";
sendpulse.init(API_USER_ID,API_SECRET,TOKEN_STORAGE,function() {
sendpulse.listAddressBooks(console.log);
});
var answerGetter = function(data) {
console.log(data);
}
var email = {
"html" : "<h1>Example text</h1>",
"text" : "Example text",
"subject" : "Example subject",
"from" : {
"name" : "Alex",
"email" : "some@domain.com"
},
"to" : [
{
"name" : "Piter",
"email" : "some@domain.net"
},
],
"bcc" : [
{
"name" : "John",
"email" : "some@domain.info"
},
]
};
sendpulse.smtpSendMail(answerGetter,email);
/* */