Javascript 如何使用不同于SMTP凭据的域成功发送邮件?

Javascript 如何使用不同于SMTP凭据的域成功发送邮件?,javascript,node.js,smtp,nodemailer,spf,Javascript,Node.js,Smtp,Nodemailer,Spf,我想发送一封电子邮件作为myemail@domain2.com使用domain1.com SMTP凭据连接到domain1.com时。domain1.com和domain2.com都有SPF记录 我做了相当多的研究,发现您应该能够通过在domain2.com的SPF记录中添加“a:domain1.com”来实现这一点。我已经这样做了,但我仍然无法成功地发送电子邮件 我使用node.js和nodeEmailer创建了一个测试代码来测试发送电子邮件 const nodemailer=require

我想发送一封电子邮件作为myemail@domain2.com使用domain1.com SMTP凭据连接到domain1.com时。domain1.com和domain2.com都有SPF记录

我做了相当多的研究,发现您应该能够通过在domain2.com的SPF记录中添加“a:domain1.com”来实现这一点。我已经这样做了,但我仍然无法成功地发送电子邮件

我使用node.js和nodeEmailer创建了一个测试代码来测试发送电子邮件

const nodemailer=require('nodemailer');
让transport=nodeEmailer.createTransport({
主机:“mail.domain1.com”,
港口:465,
认证:{
用户:'myemail@domain1.com',
通行证:“密码”
}
});
常量消息={
发件人:'myemail@domain2.com',
致:'test@gmail.com',
主题:“测试123”,
文本:“测试一二三…”
};
transport.sendMail(消息、函数(错误、信息){
如果(错误){
log('err:',err);
}否则{
console.log('info:',info);
}

});
添加第二个域作为邮件源的正确方法是使用
include
机制:

v=spf1 a mx include:domain2.com ~all
我无法从你发布的内容判断这是否是你所收到错误的真正原因

您可能还需要研究DKIM签名和DMARC


当我在这里时,没有必要使用
?all
默认机制;这相当于根本没有SPF记录;如果您使用的是DMARC,请使用
~all
,否则请使用
-all
(但在执行此操作之前,请确保所有的邮件源都已锁定)。

我是否将include语句添加到domain1.com的my domain1.com或domain2.com的spf记录中。检查domain2的记录中的内容,以确保其设置正确。我发现我的domain1.com和domain2.com都没有DKIM,不能有DKIM导致此问题吗?DKIM的设置要比SPF复杂得多,与from地址无关,但也会反馈到DMARC。这一切都很有帮助,所以最好的方法是实现所有这些,尽管这是相当多的工作。