如何解决错误:来自电子邮件地址的无效-SendGrid
几年来,我一直在使用SendGrid.com来处理密码重置电子邮件请求,而没有出现任何问题。我没有进行任何更改,最近两天,所有用户在所有电子邮件请求中均收到“ 错误:来自电子邮件地址的无效”错误。
在所有有效的电子邮件地址上都会发生这种情况。
对于我的一生,我无法弄清楚为什么这会随机发生。 SendGrid似乎最终运行正常。我正在等待获得Sendgrid的反馈。
我的设置:
var nodemailer = require('nodemailer');
var sgTransport = require('nodemailer-sendgrid-transport');
app.post('/forgot',usernametoLowerCase,function(req,res,next) {
async.waterfall([
function(done) {
crypto.randomBytes(20,function(err,buf) {
var token = buf.toString('hex');
done(err,token);
});
},function(token,done) {
User.findOne({ username: req.body.username },user) {
if (!user) {
req.flash('error','No account with that email address exists.');
return res.redirect('/forgot');
}
user.resetPasswordToken = token;
user.resetPasswordExpires = Date.Now() + 3600000; // 1 hour
user.save(function(err) {
done(err,token,user);
});
});
},user,done) {
var options = {
auth: {
api_user: '=====',api_key: '======'
}
}
var client = nodemailer.createTransport(sgTransport(options));
var email = {
from: 'BusinessName',to: user.username,subject: 'Reset Your Password',text:'====='
};
client.sendMail(email,function(err) {
req.flash('success','An email was sent to ' + user.username + ' with further instructions.' );
done(err);
});
}
],function(err) {
if (err) return next(err);
res.redirect('/forgot');
});
});
解决方法
我在php的SendGrid库中收到相同的错误消息“来自电子邮件地址无效”。似乎SendGrid在from
字段格式方面对其api进行了一些不兼容的更改。
在我的情况下,from
字段不再接受单个电子邮件地址,因此我将其更改为具有单个电子邮件地址的数组,并且可以正常工作。
from: ['some@example.com']
如果没有帮助,请尝试比较来自传输包装程序的请求和SendGrid文档https://sendgrid.com/docs/API_Reference/Web_API_v3/index.html。
我不确定包装器的工作方式,但是api中from
字段的预期格式如下:
"from": {
"email": "example@example.com"
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。