【问题标题】:How to solve Sendgrid nodemailer error with with 4078 code如何使用 4078 代码解决 Sendgrid nodemailer 错误
【发布时间】:2021-12-28 16:04:22
【问题描述】:

我写电子邮件类:

const pug = require('pug')
const nodemailer = require('nodemailer');
const htmlToText = require('html-to-text');

module.exports = class Email{
   constructor(user, url) {
      this.to = user.email;
      this.firstName = user.name.split(' ')[0];
      this.url = url;
      this.from = `Feruz Atamuradow <${process.env.EMAIL_FROM}>`;
   }

   newTransport() {
      if (process.env.NODE_ENV === 'production') {
         return nodemailer.createTransport({
         service: 'SendGrid',
         auth: {
            user: process.env.SENDGRID_USERNAME,
            pass: process.env.SENDGRID_PASSWORD
         }
         });
      }

      return nodemailer.createTransport({
         host: process.env.EMAIL_HOST,
         port: process.env.EMAIL_PORT,
         auth: {
         user: process.env.EMAIL_USERNAME,
         pass: process.env.EMAIL_PASSWORD
         },
         tls:{
            rejectUnauthorized:false
         } // and  try this without 

      });
  }

   async send(template, subject) {
      const html = pug.renderFile(`${__dirname}/../views/email/${template}.pug`, {
         firstName: this.firstName,
         url: this.url,
         subject
      });

      const mailOptions = {
         from: this.from,
         to: this.to,
         subject,
         html,
         text: htmlToText.fromString(html)
      }
      
      await this.newTransport().sendMail(mailOptions)

   }
   async sendWelcome() {
      await this.send('welcome', 'Welcome to the Natours Family!');
   }
   async sendPasswordReset() {
      await this.send('passwordReset', 'Your password reset token (valid for only 10 minutes)')
   }
}

但我只得到这个错误,我不明白这个错误。这是什么意思以及如何解决这个问题

错误:错误:连接 ECONNREFUSED 3.209.246.195:2525 在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1146:16) { 错误号:-4078, 代码:'ESOCKET', 系统调用:'连接', 地址:'3.209.246.195', 端口:2525, 命令:'CONN' }

我得到这个“生产”错误:

错误:错误:消息失败:550 发件人地址不匹配 已验证的发件人身份。在出现此错误之前无法发送邮件 解决。访问 https://sendgrid.com/docs/for-developers/sending-email/sender-identity/ 查看发件人身份要求 在 SMTPConnection._formatError (C:\Users\feruz\Desktop\complete\4-natours\node_modules\nodemailer\lib\smtp-connection\index.js:784:19) 在 SMTPConnection._actionSMTPStream (C:\Users\feruz\Desktop\complete\4-natours\node_modules\nodemailer\lib\smtp-connection\index.js:1674:34) 在 SMTP 连接。 (C:\Users\feruz\Desktop\complete\4-natours\node_modules\nodemailer\lib\smtp-connection\index.js:1152:22) 在 SMTPConnection._processResponse (C:\Users\feruz\Desktop\complete\4-natours\node_modules\nodemailer\lib\smtp-connection\index.js:947:20) 在 SMTPConnection._onData (C:\Users\feruz\Desktop\complete\4-natours\node_modules\nodemailer\lib\smtp-connection\index.js:749:14) 在 TLSSocket.SMTPConnection._onSocketData (C:\Users\feruz\Desktop\complete\4-natours\node_modules\nodemailer\lib\smtp-connection\index.js:189:44) 在 TLSSocket.emit (events.js:315:20) 在 addChunk (_stream_readable.js:309:12) 在 readableAddChunk (_stream_readable.js:284:9) 在 TLSSocket.Readable.push (_stream_readable.js:223:10) { 代码:'EMESSAGE',响应:'550 发件人地址不匹配 已验证的发件人身份。在出现此错误之前无法发送邮件 解决。访问 https://sendgrid.com/docs/for-developers/sending-email/sender-identity/ 查看发件人身份要求,responseCode: 550,
命令:“数据”}

【问题讨论】:

  • 是的,它适用于 process.env.NODE_ENV!=='production'。但无法在 sendgrid 中发送电子邮件

标签: javascript node.js sendgrid nodemailer mailtrap


【解决方案1】:

IP、您使用的端口不正确或服务未在 3.209.246.195 的 2525 端口运行。你应该再检查一遍。

检查连接:ping 3.209.246.195

查看服务(端口):telnet 3.209.246.195 2525

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    相关资源
    最近更新 更多