首页 > 解决方案 > Node.js nodemailer Gmail SMTP不工作

问题描述

require("dotenv").config();
"use strict";

var nodemailer = require("nodemailer");
const SMTPTransport = require("nodemailer/lib/smtp-transport");
console.log("Nach attr");
// async..await is not allowed in global scope, must use a wrapper
async function main() {
  // Generate test SMTP service account from ethereal.email
  // create reusable transporter object using the default SMTP transport
  console.log("vor transporter");
  
  
  let transporter = nodemailer.createTransport({
    host: "smtp.gmail.com",
    port: 465,
    secureConnection: true, // true for 465, false for other ports
    auth: {
      user: 'email', // generated ethereal user
      pass: 'password', // generated ethereal password
      tls: {
        rejectUnauthorized: false
      }
    },
  });

  transporter.verify().then(console.log).catch(console.error);
  
  let mailOptions = {
    from: 'testsender',
    to: 'reciever',
    subject: 'Test Mail',
    text: '123456789'
  };
  console.log("vor transporter.send");
  transporter.sendMail(mailOptions, function (err, data) {
    if (err) {
      console.log('Error Occurs: ', err);
    } else {
      console.log('Email sent!');
    }
  });
  //console.log("Message sent: %s", info.messageId);
  // Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>

  // Preview only available when sending through an Ethereal account
  //console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
  // Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
}
main().catch(console.error);

控制台输出

Error Occurs:  Error: connect ETIMEDOUT 64.233.166.108:465
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
  errno: 'ETIMEDOUT',
  code: 'ESOCKET', 
  syscall: 'connect',
  address: '64.233.166.108',
  port: 465,
  command: 'CONN'
}

标签: node.jssmtpgmailnodemailer

解决方案


推荐阅读