我想使用nodemailer从应用程序发送电子邮件,我的代码如下所示:
var smtpTransport = nodemailer.createTransport(smtpTransport({
pool: true,
host: 'smtp.myemailserver.com',
port: 587,
auth: {
user: 'user@myDomain.com',
pass: '******'
}
}));
var mailOptions = {
from: 'user@myDomain.com',
to: 'user2@gmail.com',
subject: 'test ',
text: 'Hello world ',
html: '<b>Hello world </b>'
};
smtpTransport.sendMail(mailOptions, function(error, info){
if(error){
console.log(error);
}else{
console.log('Message sent: ' + info.response);
}
});
Run Code Online (Sandbox Code Playgroud)
但我得到我无法弄清的错误:
[Error: Hostname/IP doesn't match certificate's altnames: "Host: smtp.myemailserver.com. is not in the cert's altnames: DNS:secure.emailsrvr.com, DNS:www.secure.myemailserver.com"]
reason: 'Host: smtp.myemailserverr.com. is not in the cert\'s altnames: DNS:secure.myemailserver.com, DNS:www.myemailserver.com',
host: 'smtp.myemailserver.com.',
cert:
{ subject: { OU: [Object], CN: 'secure.myemailserver.com' },
issuer:
{ C: 'GB',
ST: 'Greater Manchester',
L: 'Salford',
O: 'COMODO CA Limited',
CN: 'COMODO RSA Domain Validation Secure Server CA' },
subjectaltname: 'DNS:secure.emailsrvr.com, DNS:www.secure.myemailserver.com',
infoAccess: { 'CA Issuers - URI': [Object], 'OCSP - URI': [Object] }
Run Code Online (Sandbox Code Playgroud)
我试图添加
tls {
rejectUnauthorized: false
}
Run Code Online (Sandbox Code Playgroud)
到电子邮件选项,但是导致阻止我的电子邮件,所以请提供任何帮助
不确定是否像问题中一样在代码中缺少冒号,但应为:
tls: {
rejectUnauthorized: false
}
Run Code Online (Sandbox Code Playgroud)
以我的经验,这就是解决证书名称不匹配所需要的。整个运输选项应如下所示:
var smtpTransport = nodemailer.createTransport(smtpTransport({
pool: true,
host: 'smtp.myemailserver.com',
port: 587,
auth: {
user: 'user@myDomain.com',
pass: '******'
},
tls: {
rejectUnauthorized: false
}
Run Code Online (Sandbox Code Playgroud)
另外请记住,这会使您容易受到SSL的MITM攻击。
| 归档时间: |
|
| 查看次数: |
3839 次 |
| 最近记录: |