首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Nodejs Nodemailer :使用现有代码错误: 550向API密钥发送Sendgrid SMTP用户名和密码

Nodejs Nodemailer :使用现有代码错误: 550向API密钥发送Sendgrid SMTP用户名和密码
EN

Stack Overflow用户
提问于 2020-10-21 19:30:04
回答 2查看 2.8K关注 0票数 3

目前im使用sendgrid使用nodejs库“(‘nodemailer’)”TransporterOption:

配置:

代码语言:javascript
运行
复制
 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
        }
    },

发送代码:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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“

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-27 18:22:43

我还需要从基本身份验证迁移到Sendgrid的API密钥。

我试图以以下方式使用API密钥,并且可能有效,但不知道我们是否仍然以这种方式使用基本身份验证,这将很快由于强制2FA而失败。

如果我们在这里做的是对的,请告诉我。

代码语言:javascript
运行
复制
// 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/upgrade-your-authentication-method-to-api-keys

https://sendgrid.com/docs/for-developers/sending-email/authentication/

票数 6
EN

Stack Overflow用户

发布于 2020-11-07 11:03:34

您可以安装nodemailer-sendgrid包,然后创建如下所示的传输:

代码语言:javascript
运行
复制
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-传输,并且是由编者编写的。一个小缺点是它正在使用引擎盖下的特定于供应商的库。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64470449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档