express使用Nodemailer发送邮件

文章参考

  1. Node.js使用Nodemailer发送邮件

问题来源

想开发一个“联系我们”的功能,也就是用户输入一些信息(文字和附件),最终以邮件的形式发给相关的管理员

解决办法

使用Nodemailer插件解决发送邮件的问题

Nodemailer介绍

Nodemailer 是一个简单易用的Node.js邮件发送组件

官网地址:https://nodemailer.com

GitHub地址:https://github.com/nodemailer/nodemailer

Nodemailer的主要特点包括:

  • 支持Unicode编码
  • 支持Window系统环境
  • 支持HTML内容和普通文本内容
  • 支持附件(传送大附件)
  • 支持HTML内容中嵌入图片
  • 支持SSL/STARTTLS安全的邮件发送
  • 支持内置的transport方法和其他插件实现的transport方法
  • 支持自定义插件处理消息
  • 支持XOAUTH2登录验证

安装

npm install nodemailer -D

案例

const express = require("express");
const nodemailer = require("nodemailer");
const router = express.Router();

// 定义邮件服务器服,个人建议使用QQ邮箱,用Yeah(网易)邮箱配置出现各种问题
var transporter = nodemailer.createTransport({
    host: 'smtp.qq.com',
    service: 'qq',
    secure: true,
    // 我们需要登录到网页邮箱中,然后配置SMTP和POP3服务器的密码
    auth: {
        user: '************@qq.com',
        pass: 'asdfghjk'
    }
});

router.post('/send', function (req, res, next) {
    // 获取前端传递过来的参数
    var emailaddress = req.body.emailaddress;
    var firstname = req.body.firstname;
    var imgurl = req.body.imgurl;
    var lastname = req.body.lastname;

    var sendHtml = `<div>
      <div>firstName : ${firstname}</div>
      <div>lastname : ${lastname}</div>
      <div>emailaddress : ${emailaddress}</div>
      <div>file : <a href="${imgurl}">down upload file</a> </div>
    </div>`;

    var mailOptions = {
        // 发送邮件的地址
        from: '**********@qq.com', // login user must equal to this user
        // 接收邮件的地址
        to: '**********@gmail.com',  // xrj0830@gmail.com
        // 邮件主题
        subject: 'You have a new uploaded file',
        // 以HTML的格式显示,这样可以显示图片、链接、字体颜色等信息
        html: sendHtml
    };
    // 发送邮件,并有回调函数
    transporter.sendMail(mailOptions, function (error, info) {
        if (error) {
            return console.log(error);
        }
        console.log('Message sent: ' + info.response);
    });
    res.status(200).json({message: req.body.firstname});
});
阅读更多

没有更多推荐了,返回首页