目前im使用sendgrid使用nodejs库“(‘nodemailer’)”TransporterOption:
配置:
transporterOption: {
host: process.env.SMTP_HOST, // smtp.sendgrid.net
pool: true,
maxConnections: 20,
rateDelta: 1000,
rateLimit: 150,
auth: {
user: process.env.USER_NAME,
pass: process.env.PASSWORD
}
},
发送代码:
const config = require('./config');
const nodeMailer = require('nodemailer');
const htmlToText = require('nodemailer-html-to-text').htmlToText;
const transporter = nodeMailer.createTransport(config.transporterOption);
transporter.use('compile', htmlToText());
try {
let mailOptions = {
headers: { 'X-SMTPAPI': `{"category":["${myid}"]}` },
from: `"myname" <${toemail}>`,
replyTo: `"myname" <${toemail}>`,
to: `"name" <${emailAdr}>`,
subject: mysubject,
text: mytextbody,
html: myhtmlbodymsg
}
} catch (e) {
console.log(e);
}
工作顺利,没有任何问题。
在传递api_key以响应此错误时,从用户名/密码迁移到API键:“邮件命令失败:不允许550个未经身份验证的发件人”
备选案文1:
transporterOption: {
host: process.env.SMTP_HOST, // smtp.sendgrid.net
pool: true,
maxConnections: 20,
rateDelta: 1000,
rateLimit: 150,
auth: {
api_key: process.env.SENDGRID_API_KEY // fakeKEY.kashdkjhjkdhsakjdhksajhd
}
},
“错误”:{“消息”:“缺少”“平原”的凭据“,”名称“:”错误“,”堆栈“:”错误:缺少“平原”的凭据\n
备选案文2:
transporterOption: {
host: process.env.SMTP_HOST, // smtp.sendgrid.net
pool: true,
maxConnections: 20,
rateDelta: 1000,
rateLimit: 150,
auth: {
Username: process.env.USER_NAME, //’apikey’
Password: process.env.SENDGRID_API_KEY // fakekeyssssjhkjsahdkjsahdkjhsa
}
},
错误:“{”消息“:”邮件命令失败:550个未经身份验证的发件人不允许“,”名称“:”错误“,”堆栈“:”错误:邮件命令失败:550个未经身份验证的发件人不允许\n“
备选方案3:
transporterOption: {
host: process.env.SMTP_HOST, // smtp.sendgrid.net
pool: true,
maxConnections: 20,
rateDelta: 1000,
rateLimit: 150,
auth: {
api_user: 'apikey',
api_key: process.env.SENDGRID_API_KEY // fakekeyssssjhkjsahdkjsahdkjhsa
}
},
错误:“{”消息“:”邮件命令失败:550个未经身份验证的发件人不允许“,”名称“:”错误“,”堆栈“:”错误:邮件命令失败:550个未经身份验证的发件人不允许\n“
发布于 2020-10-27 10:22:43
我还需要从基本身份验证迁移到Sendgrid的API密钥。
我试图以以下方式使用API密钥,并且可能有效,但不知道我们是否仍然以这种方式使用基本身份验证,这将很快由于强制2FA而失败。
如果我们在这里做的是对的,请告诉我。
// This below auth object is specific to NODEMAILER configuration options
// This is NOT the same for sendgrid native API configuration
// you can try with your keys named Username/Password but mine works with user/pass
auth: {
'user': 'apikey', // <--- keep as is
'pass': 'SG.aslknwefn_RANDOM_FAKE_KEY', // <--- your api key
}
sendgrid参考链接:
https://sendgrid.com/docs/for-developers/sending-email/authentication/
发布于 2020-11-07 03:03:34
您可以安装nodemailer-sendgrid包,然后创建如下所示的传输:
const nodemailer = require('nodemailer');
const nodemailerSendgrid = require('nodemailer-sendgrid');
const transport = nodemailer.createTransport(
nodemailerSendgrid({
apiKey: process.env.SENDGRID_API_KEY
})
);
如果使用的是TypeScript,也可以使用npm install --save @types/nodemailer-sendgrid
安装相应的类型。
这似乎已经取代了过时的nodemailer-sendgrid-传输,并且是由编者编写的。一个小缺点是它正在使用引擎盖下的特定于供应商的库。
https://stackoverflow.com/questions/64470449
复制相似问题