当前位置:

正文

简介:

      nodemailer是一个简单易用的 node.js 邮件发送模块(通过 smtp,sendmail,或者 amazon ses),支持 unicode,你可以使用任何你喜欢的字符集。

特点:

      支持Unicode编码(包括表情符)

      支持Window系统环境,不需要安装依赖

      支持HTML内容和普通文本text内容

      支持附件(传送大附件)

      支持HTML内容中嵌入图片

      支持SSL/STARTTLS安全的邮件发送

      支持内置的transport方法和其他插件实现的transport方法

      支持自定义插件处理消息

      支持XOAUTH2登录验证

 

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

 

一、使用nodemailer

1、首先在后台应用程序中下载安装nodemailer:

npm install nodemailer --save

 

2、在email.js中引入nodemailer:

const nodemailer = require("nodemailer")

 

3、配置服务参数:

// 定义邮件服务器服,建议使用QQ邮箱,其它邮箱请自行测试
const emailTranSport = nodemailer.createTransport({
    //定义邮箱的类型
    service: "qq",
    // secure:true for port 465, secure:false for port 587
    secure: true,
   // 使用证书
    secureConnection: true, // use SSL
    port: 465,
    // qq 的host是 smtp.qq.com, 163的host是smtp.163.com
    host: "smtp.qq.com",
    // 我们需要登录到网页邮箱中,然后配置SMTP和POP3服务器的密码
    auth: {
        user: "xxxx@qq.com",
        pass: "xxxxxxxxxxxxx"
    }
    //注意:不是邮箱账户的密码而是stmp的授权码(必须是相应邮箱的stmp授权码)
    //例子:QQ邮箱---设置--账户--POP3/SMTP服务---开启---获取stmp授权码
});

 

PS: 在配置的时候需要注意以下几点:

  • auth中的pass不是你邮箱的登录密码,重要的事情说三遍,不是登录密码!不是登录密码!不是登录密码!上面的代码示例有相关的说明获取pass的方式。如果你的邮箱是163的邮箱,那么pass是你163邮箱的登录密码。
  • 发送邮件的邮箱(from)必须和auth中的user所对应。

 

4、完整代码示例(email.js):

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

// 定义邮件服务器服,建议使用QQ邮箱,其它邮箱请自行测试
const emailTranSport = nodemailer.createTransport({
    //定义邮箱的类型
    service: "qq",
    // secure:true for port 465, secure:false for port 587
    secure: true,
   // 使用证书
    secureConnection: true, // use SSL
    port: 465,
    // qq 的host是 smtp.qq.com, 163的host是smtp.163.com
    host: "smtp.qq.com",
    // 我们需要登录到网页邮箱中,然后配置SMTP和POP3服务器的密码
    auth: {
        user: "xxxx@qq.com",
        pass: "xxxxxxxxxxxxx"
    }
    //注意:不是邮箱账户的密码而是stmp的授权码(必须是相应邮箱的stmp授权码)
    //例子:QQ邮箱---设置--账户--POP3/SMTP服务---开启---获取stmp授权码
});
router.post("/send", function (req, res, next) {
    // 接收参数: 发送邮件的地址、接收邮件的地址、邮件主题......
    const { title, name, type, content, r_content,url, sourceEmail, targetEmail, subject } = req.body;
    //定义邮件模板(支持html格式)
    const sendHtml = `邮件模板`;

    const options = {
        // 发送邮件的地址
        from: sourceEmail,
        // 接收邮件的地址
        to: targetEmail,
        // 邮件主题
        subject: subject,
        // 以HTML的格式显示,这样可以显示图片、链接、字体颜色等信息
        html: sendHtml
    };
    // 发送邮件,并有回调函数
    emailTranSport.sendMail(options, async (err, info) => {
        if (err) {
            console.error(err)
            return;
        }
        res.json({
            status: 1,
            success: true,
            message: "发送成功"
        })
    });
});

module.exports = router;

 

5、效果展示:

 

 

最后说明,博主的邮件模板是用于文章评论时自行创建的,如有需要的朋友可以复制以下代码,如果你有相关问题,欢迎留言评论,我们一起共同探讨。

邮件模板源码:

 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>邮件模板</title>
</head>

<body>
    <div
        style="width: 550px; height: auto; margin: 0 auto; border-radius: 5px;position: relative;padding-bottom: 5px;box-shadow: 0px 0px 20px #888888;">
        <div class="cover">
            <img style="width: 100%;object-fit: cover;" src="https://weichaooqx.com/img/blog-images/b3.webp" alt="邮件封面">
        </div>
        <div class="content"
            style="width: 100%;position: relative;padding: 0 15px 12px;background: #ffffff;box-sizing: border-box;">
            <span
                style="position: absolute;width: 200px;height: 40px;background: rgba(0, 193, 222);text-align: center;
            line-height: 40px;color: #fff;top: -40px;left: 15px;box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.3);">Hello:&nbsp;XXXXX博客</span>
            <p style="padding: 30px 0;">您在<span class="name" style=" color: #00c1de;">《XXXXX文章》</span>的评论有了新的回复:</p>
            <p class="title" style=" font-size: 14px; font-weight: bold;">您的评论:</p>
            <div class="comment"
                style=" margin: 18px 0;font-size: 12px;color: #555555; overflow: hidden;border-radius: 5px;padding: 10px 15px; border: 0px solid #DDD;background-color: #f5f5f5;">
                博主站点挺好看的,赞一个φ( ̄∇ ̄o),互换友链,已将贵站显示。 网站名称:XXXXX博客
            </div>
            <p class="title" style=" font-size: 14px; font-weight: bold;">博主(XXXXX)给您回复:</p>
            <div class="reply"
                style=" margin: 18px 0;font-size: 12px;color: #555555;overflow: hidden;border-radius: 5px;padding: 10px 15px; border: 0px solid #DDD;background-color: #f5f5f5;">
                博主站点挺好看的,赞一个φ( ̄∇ ̄o),互换友链,已将贵站显示。 网站名称:XXXXX博客
            </div>
            <div class="desc" style="text-align: center;font-size: 14px;color: #8c8c8c;">
                青春是有限的,智慧是无穷的,趁短的青春,去学习无穷的智慧——高尔基
            </div>
            <a class="btn" href="#" target="_blank" rel="noopener noreferrer"
                style="font-size:14px;width: 40%; height: 40px;display: block; color: #ffffff;line-height: 35px; margin: 24px auto; text-align: center;text-decoration: none;background: rgba(0, 193, 222);box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.30);">查看回复的完整内容</a>
            <p style="text-align: center;font-size: 14px;color: #8c8c8c;">本邮件由系统自动发送,请勿直接回复</p>
            <p style="text-align: center;font-size: 14px;color: #8c8c8c;">© 2018 XXXXX个人博客 All Rights Reserved. </p>
        </div>
    </div>
</body>

</html>
创作不易,感谢您对作者的支持!~( ̄▽ ̄)~
文章评论
评论列表 (有 0 条评论)
还没有评论,来说两句吧......