我使用托管在 GoDaddy 上的 Microsoft 365 Outlook 帐户。
当用户单击 [联系我们] 按钮时,我试图让我的 Node 服务器向我的 Outlook 帐户发送电子邮件。代码如下:
const nodemailer = require('nodemailer');
app.post('/contact', function(req, res){
res.send(JSON.stringify(req.body));
//generate email
let transporter = nodemailer.createTransport({
host: 'smtp.office365.com',
port: 587,
secure: false,
auth: {
user: 'myemail@mysite.com',
pass: 'mypass'
}
});
const mailOptions = {
from: '"Administrator" <myemail@mysite.com>',
to: 'myemail@mysite.com',
subject: "Someone has messaged your website",
html: "<p>Name: " + req.body.fullName + "<br>Email: " + req.body.email + "<br>Message: " + req.body.msg + "</p>"
};
transporter.sendMail(mailOptions, function (err, info) {
if(err)
console.log(err)
else
console.log(info.messageId);
});
});
记录到控制台的错误是:
'451 4.7.0 Temporary server error. Please try again later. PRX4 [CO2PR04CA0181.namprd04.prod.outlook.com]'
7/13 更新 另一个可能更有用的错误消息(如错误堆栈中的第一行)如下:
at SMTPConnection._formatError
答案 0 :(得分:0)
我正在使用此功能向 Outlook 发送邮件,试试看是否有效。
我唯一能怀疑的就是 tls。
module.exports.sendEmail = function (options) {
if(!options){
throw new Error("invalid options");
} else if(!options.auth) {
throw new Error("missing user and pass");
}
var transporter = nodemailer.createTransport({
host: 'smtp.office365.com', // Office 365 server
port: 587, // secure SMTP
secure:false, // false for TLS -
auth: options.auth,
tls: {ciphers: 'SSLv3'} // <<< try adding it
});
transporter.sendMail({
from: options.from,
sender: options.sender,
replyTo: options.replyTo,
to: options.to,
subject: options.subject,
cc:options.cc,
bcc:options.bcc,
text:options.text,
html:options.html,
attachments:options.attachments,
}, function (err, info) {
if (err && options.onError) {
options.onError(err);
}
else if(options.onSuccess) {
options.onSuccess(info);
}
});
}
****** caller ******
nodeoutlook.sendEmail({
auth: {
user: "user@outlook.com",
pass: "********"
},
from: 'from@outlook.com',
to: 'to@gmail.com',
subject: 'subject',
html: '<b>html</b>',
text: 'text',
replyTo: 'replyTo@gmail.com',
attachments: [],
onError: (e) => console.log(e),
onSuccess: (i) => console.log(i)
}
答案 1 :(得分:0)
理解这是一个非常蹩脚的答案......但它是事实!!
我更改了我的电子邮件帐户的密码 (mypass) 然后它起作用了。