使用nodejs发送邮件 - 青蓝鱼的博客-没有bug的代码是不完美的
侧边栏壁纸
  • 累计撰写 27 篇文章
  • 累计收到 16 条评论

使用nodejs发送邮件

admin
2022-10-06 / 0 评论 / 117 阅读 / 正在检测是否收录...

 对于登录注册或者一些监控、数据处理的定时任务,可能需要发送邮件的能力。
今天分享一下使用node server发送邮件的流程。

 发送邮件的过程是,你的客户端给邮件服务器发信息,然后邮件服务器发给目标邮件服务器,目标邮件服务器再通知到客户端,目标用户就收到了
m1
 如果我们使用qq客户端可以直接用账号密码登录自己的邮箱。使用node server发邮件,相当于第三方客户端。第三方客户端指的就是除了qq自己的客户端外的其他客户端。
发邮件流程变成了
m2
 这里有个问题,使用qq客户端可以直接通过账号密码登录邮箱,第三方客户端使用账号密码登录肯定不安全,因此qq邮箱提供了授权码,第三方客户端可以通过授权码以用户身份访问邮箱服务器。由于授权码的权限可以控制,比如可以关闭服务,第三方客户端就无法使用授权码登录了,因此授权码比较安全。
node server发送邮件时候就是一个第三方客户端。使用nodejs发送邮件的操作流程是:

  1. 从qq邮箱获取授权码
  2. 安装nodemailer
  3. 发送邮件

    Nodemailer模块

    使用npm下载安装Nodemailer模块:

    npm install nodemailer

    发送电子邮件

    下面的例子,使用QQ邮箱发送邮件,还需另外安装两个辅助模块,用于配置邮箱账号:

    npm install nodemailer-smtp-transport nodemailer-wellknown --save

    示例:

    var nodemailer = require('nodemailer');
    
    var smtpTransport = require('nodemailer-smtp-transport');
    var wellknown = require("nodemailer-wellknown");
    var config = wellknown("QQ");
    
    config.auth = {
     user:'你的账号@qq.com',
     pass:'你的密码' // QQ邮箱此处使用授权码
    }
    
    var transporter = nodemailer.createTransport(smtpTransport(config));
    
    var mailOptions = {
      from: '你的账号@qq.com', // 你的QQ邮箱网址,必须与上面配置一致
      to: 'myfriend@qq.com',
      subject: 'Node.js邮件发送测试',
      text: 'test!'
    };
    
    transporter.sendMail(mailOptions, function(error, info){
      if (error) {
     console.log(error);
      } else {
     console.log('Email sent: ' + info.response);
      }
    });
    

    多个接收人

    要向多个收件人发送电子邮件,在mailOptions对象的“To”属性中添加邮箱地址,以逗号分隔:

    var mailOptions = {
      from: '你的账号@gmail.com',
      to: 'myfriend@yahoo.com, myotherfriend@yahoo.com',
      subject: 'Node.js邮件发送测试',
      text: 'test!'
    }
    

    发送HTML

    var mailOptions = {
      from: 'youremail@gmail.com',
      to: 'myfriend@yahoo.com',
      subject: 'Sending Email using Node.js',
      html: '<h1>Welcome</h1><p>That was easy!</p>'
    }
    
本文共 487 个字数,平均阅读时长 ≈ 2分钟
0

打赏

评论 (0)

取消