1

I started having this problem whenever I run "yarn run dev:server" and my application doesn't start. Does anyone know how to solve it?

A important OBS: The application is running on Docker with redis and peerjs

The full error:

Error: connect ETIMEDOUT 13.49.22.0:443
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1129:16)
[ERROR] 15:27:24 Error: connect ETIMEDOUT 13.49.22.0:443

When I run in production mode (yarn start)

Error: connect ETIMEDOUT 13.49.22.0:443
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1129:16) {
  errno: -4039,
  code: 'ETIMEDOUT',
  syscall: 'connect',
  address: '13.49.22.0',
  port: 443,
  type: 'FETCH',
  sourceUrl: 'https://api.nodemailer.com/user'

I have the file .env:

# App settings
APP_API_URL=http://localhost:3333
APP_WEB_URL=http://localhost:3000
APP_ADMIN_URL=http://localhost:3001
APP_SECRET=admin
APP_DEFAULT_PAGE_LIMIT=50
PORT=3333
STORAGE_DRIVER=disk
MAIL_DRIVER=ethereal

I try configure with mailjet, but show the same error.

MailjetProvider.ts, where I belive the Mailjet is configured:

@injectable()
export default class MailjetMailProvider implements IMailProvider {
  private client: Transporter;

  constructor(
    @inject('MailTemplateProvider')
    private mailTemplateProvider: IMailTemplateProvider,
  ) {
    this.client = nodemailer.createTransport({
      host: mailConfig.mailjet.host,
      port: mailConfig.mailjet.port,
      secure: false,
      auth: mailConfig.mailjet.auth,
    });
  }

  public async sendMail({
    to,
    from,
    subject,
    templateData,
  }: ISendMailDTO): Promise<void> {
    const { name, email } = mailConfig.defaults.from;

    await this.client.sendMail({
      from: {
        name: from?.name || name,
        address: from?.email || email,
      },
      to: {
        name: to.name,
        address: to.email,
      },
      subject,
      html: await this.mailTemplateProvider.parse(templateData),
    });
  }
}

mail.ts:

interface IMailConfig {
  driver: 'ethereal' | 'ses';

  mailjet: {
    host: string;
    port: number;
    auth: {
      user: string;
      pass: string;
    };
  };

  defaults: {
    from: {
      email: string;
      name: string;
    };
  };
}

export default {
  driver: process.env.MAIL_DRIVER || 'ethereal',

  mailjet: {
    host: process.env.MAILJET_HOST || '',
    port: Number(process.env.MAILJET_PORT) || 587,
    auth: {
      user: process.env.MAILJET_USER || '',
      pass: process.env.MAILJET_PASS || '',
    },
  },

  defaults: {
    from: {
      email: process.env.MAIL_FROM,
      name: process.env.MAIL_FROM_NAME,
    },
  },
} as IMailConfig;

EtherealMailProvider.ts, where Ethereal is config.

@injectable()
export default class EtherealMailProvider implements IMailProvider {
  private client: Transporter;

  constructor(
    @inject('MailTemplateProvider')
    private mailTemplateProvider: IMailTemplateProvider,
  ) {
    nodemailer.createTestAccount().then(account => {
      const transporter = nodemailer.createTransport({
        host: account.smtp.host,
        port: account.smtp.port,
        secure: account.smtp.secure,
        auth: {
          user: account.user,
          pass: account.pass,
        },
      });

      this.client = transporter;
    });
  }

  public async sendMail({
    to,
    from,
    subject,
    templateData,
  }: ISendMailDTO): Promise<void> {
    const { name, email } = mailConfig.defaults.from;

    const message = await this.client.sendMail({
      from: {
        name: from?.name || name,
        address: from?.email || email,
      },
      to: {
        name: to.name,
        address: to.email,
      },
      subject,
      html: await this.mailTemplateProvider.parse(templateData),
    });=
}
mazha
  • 45
  • 1
  • 7
  • It seems one address doesn't respond and timeout occurs. Can you share code that connecting to `13.49.22.0:443` address ? And be sure that is mailjet allows connections come over http. – Batuhan Nov 03 '21 at 21:35
  • Hi! :) I don't find where this IP is config to connect (what is strange) I asked to another person in the team and he said the IP is from Ethereal or Amazon... – mazha Nov 03 '21 at 21:48
  • https://stackoverflow.com/questions/31473292/etimedout-connect-error-using-nodemailer-in-nodejs-openshift-application may be helpful. Needs more detail on your question to solve the problem. Maybe more code about mailjet client creation or etc. will helpful. – Batuhan Nov 03 '21 at 21:50
  • @Batuhan Done! I add the Mailjet file config. Can you help me? – mazha Nov 03 '21 at 21:55

0 Answers0