使用nodemailer发送邮件

1. 以QQ为例子:

第一步:

项目中安装nodemailer

npm i nodemailer

第二步:

引入nodemailer并创建发送邮件的SMTP服务器配置:

const nodemailer = require('nodemailer');


const transporter = nodemailer.createTransport({

  // logger: true, // 开启基础日志

  // debug: true,   // 输出SMTP协议级通信细节

  service: "qq",
  auth: {
          user: '你的qq号@qq.com',
          pass: 'uhaguownryribafa'
  }

});

 这个auth中的user就是你的邮箱地址,pass的获取方式如下图:

第三步:

封装接口实现发送功能:

app.post('/send-email', async (req, res) => {
    const {email} = req.body
    const mailOptions = {
      from: '参数', // 发送者邮箱
      to: email, // 接收者邮箱
      subject: '报信息推送', // 邮件标题
      text: '', // 邮件文本内容
      // 邮件HTML内容
      html:
        `
        <p>html</p>
      
      `
    };
    try {
      await transporter.sendMail(mailOptions);
      return res.status(200).send({ code: 0, message: "'Email sent successfully'" });
    } catch (error) {
      return res.status(500).send({ code: 1, message: "'Error sending email'" });
    }


});

2. 公司内网(个人遇到的):

公司内网实现邮件发送,需要客户提供的有:SMTP服务器地址,SMTP服务器端口号,邮箱的账号和密码,必须要确保SMTP服务已开启,整体上是不改变的,某些配置项需要调整。

// 创建发送邮件的SMTP服务器配置
const transporter = nodemailer.createTransport({
  // logger: true, // 开启基础日志 
  // debug: true,   // 输出SMTP协议级通信细节 
  host: '服务器IP', // SMTP 服务器地址
  port: 25,             // SMTP 端口号
  secure: false,
  tls: {
    rejectUnauthorized: false // 忽略证书验证 必须开启
  },
  auth: {
    user: '提供的邮箱号',
    pass: '邮箱密码'
  }

});

这里我遇到的问题是 服务器使用自签名证书,Node.js 默认拒绝此类不安全连接,需要多写一个配置项:

tls: {

    rejectUnauthorized: false // 忽略证书验证 必须开启

  },

其余的调整参数就可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值