专栏首页木子昭的博客用nodejs向163邮箱, gmail邮箱, qq邮箱发邮件, nodemailer使用详解

用nodejs向163邮箱, gmail邮箱, qq邮箱发邮件, nodemailer使用详解

以前写过一篇3行代码发邮件(含发送图片), 收获了50+喜欢, 最近博主在用node做后端渲染的业务, 把nodejs发邮件的核心代码也分享一下

准备工作

"注释详尽"的源码

'use strict';
const nodemailer = require('nodemailer');
const moment = require('moment');
const path = require('path');

nodemailer.createTestAccount((err, account) => {
    // 填入自己的账号和密码
    let transporter = nodemailer.createTransport({
        host: 'smtp.163.com',
        port: 465,
        secure: true, // 如果是 true 则port填写465, 如果 false 则可以填写其它端口号
        auth: {
            user: "lijianzhaoyou@163.com", // 发件人邮箱
            pass: "" // 发件人密码(用自己的...)
        }
    });
    // 获取当前时间
    let sendTime = moment().format('MMMM Do YYYY, h:mm:ss a');
    // 填写发件人, 收件人
    let mailOptions = {
        // 发件人地址
        from: 'lijianzhaoyou@163.com',
        // 收件人列表, 向163邮箱, gmail邮箱, qq邮箱各发一封
        to: 'lijianzhaoyou@163.com, zhaoolee@gmail.com, 861881383@qq.com',
        // 邮件主题
        subject: '用nodemailer发出的邮件~',
        // 文字内容
        text: '发送附件内容',
        // html内容
        html: '<b>发送时间:' + sendTime + '</b>',
        // 附件内容 是一个列表, 第一个是目录下的pack.json文件, 第二是御坂美琴的头像, 第三是作者在拍的图片的zip包
        attachments: [{
            filename: 'package.json',
            path: path.resolve(__dirname, 'package.json')
        }, {
            filename: 'bilibili.jpg',
            path: path.resolve(__dirname, 'bilibili.jpg')
        }, {
            filename: 'room.zip',
            path: path.resolve(__dirname, 'room.zip')
        }],
    };

    // 发送邮件
    transporter.sendMail(mailOptions, (error, info) => {
        if (error) {
            return console.log(error);
        }
        console.log("邮件发送成功~");
    });
});

运行结果

  • Gmail收到:

  • 163邮箱收到(自己发给自己)

  • qq邮箱收到

相关资源:

链接:https://pan.baidu.com/s/1Gk6zMO4_I2oWNvRlgzmfng 密码:i3lu

小结:

用邮件作为后端程序的预警是一个古老而有效的方法, 虽然nodemailer发邮件的代码量,远大于三行代码的yagmail,但nodemailer的通用性还是蛮强的, 推荐使用, 如果哪个小伙伴用更好用的nodejs发邮件的模块, 欢迎在下方留言, 最后祝双十一剁手愉快~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 老司机用python脚本刷微信读书的时长

    送你一个偷懒的机会, abd绿色版和脚本的合集, 博主给你整理好了, 可以通过关注微信公众号jikeweikan,回复微信读书刷时长, 获取下载链接, 祝玩得愉...

    zhaoolee
  • <scapy>刺探星巴克无线网,记录顾客信息

    上网除了需要IP, 还需要Mac地址, Mac与网卡绑定, 记录了设备的Mac, 相当于标记了设备使用者 关于Mac和IP的关系: <讲个故事>为什么IP地址...

    zhaoolee
  • <Python脚本>批量转换less至css

    zhaoolee
  • Linux常用命令之netstat 原

    -a (all)显示所有选项,默认不显示LISTEN相关 -t (tcp)仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,...

    用户2603479
  • SpringBoot 2.xECharts+AJAX实现异步数据加载

    程裕强
  • SAP最佳业务实践:MM–批次管理的库存物料采购(901)-2报价

    3 流程概览表 步骤名称业务条件角色事务­代码预期结果创建报价请求有物料和供应商采购员ME41报价请求维护报价存在 RFQ采购员ME47报价创建采购订单存在 ...

    SAP最佳业务实践
  • CNCF案例研究:Linkerd是Apester的“安全网”,可以防止遗忘超时导致的级联故障

    使用的CNCF项目包括:gRPC、Kubernetes、Linkerd、Prometheus

    CNCF
  • 骁龙855即将量产 大批旗舰智能机在路上

    外媒 WCCFTech 报道称,随着高通骁龙 855 SoC 即将转入量产,以三星 Galaxy S10 为代表的各种旗舰设备将蜂拥而至。负责代工厂的台积电已做...

    Zip
  • Java中居然有一个存在十几年的bug...

    今天,分享一个JDK中令人惊讶的BUG,这个BUG的神奇之处在于,复现它的用例太简单了,人肉眼就能回答的问题,JDK中却存在了十几年。经过测试,我们发现从JDK...

    良月柒
  • Java入门系列-09-循环结构

    生活中有很多事情需要我们重复的去做,比如围着操场跑10圈,比如写了个爬虫需要爬取20个页面,这些都是循环。

    享智同行

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动