Error: Invalid from email address - SendGrid
Error: Invalid from email address - 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 }, function(err, 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);
});
});
},
function(token, 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 对其 api 关于 from
字段格式进行了一些不兼容的更改。
在我的例子中,from
字段不再接受单个电子邮件地址,因此我将其更改为具有单个电子邮件地址的数组并且它起作用了。
from: ['some@example.com']
如果没有帮助,请尝试将来自传输包装器的请求与 SendGrid 文档进行比较 https://sendgrid.com/docs/API_Reference/Web_API_v3/index.html。
我不确定包装器是如何工作的,但 api 中 from
字段的预期格式如下所示:
"from": {
"email": "example@example.com"
}
几年来,我一直在使用 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 }, function(err, 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);
});
});
},
function(token, 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 对其 api 关于 from
字段格式进行了一些不兼容的更改。
在我的例子中,from
字段不再接受单个电子邮件地址,因此我将其更改为具有单个电子邮件地址的数组并且它起作用了。
from: ['some@example.com']
如果没有帮助,请尝试将来自传输包装器的请求与 SendGrid 文档进行比较 https://sendgrid.com/docs/API_Reference/Web_API_v3/index.html。
我不确定包装器是如何工作的,但 api 中 from
字段的预期格式如下所示:
"from": {
"email": "example@example.com"
}