Node.js使用NodeMailer发送邮件实例代码


Posted in Javascript onMarch 06, 2017

0.目标

这一节,我将实现一个简单的发送邮件功能。

1.部署

1.1 部署Express

如果不知道如何部署,可参照:部署Express

1.2 准备一个邮箱并开始SMTP服务

为了实现这个功能,你首先要有一个邮箱;由于需要使用SMTP方式发送,你还需要开启相关功能。你可以登录你的邮箱,然后开启这个设置,以新浪邮箱和QQ邮箱为例:

Node.js使用NodeMailer发送邮件实例代码

Node.js使用NodeMailer发送邮件实例代码

2.服务器端

2.1 使用nodemailer

这里要用到nodemailer,需要自行安装:

npm install nodemailer --save

在routes/index.js中引用nodemailer:

var multer = require('nodemailer');

2.2 配置

在routes/index.js中创建一个传输方式:

var mailTransport = nodemailer.createTransport({
  host : 'smtp.sina.com',
  secureConnection: true, // 使用SSL方式(安全方式,防止被窃取信息)
  auth : {
    user : '你的邮箱地址',
    pass : '你的邮箱密码'
  },
});

注意,低版本的nodemailer可能需要多传入一个参数“SMTP”:

var mailTransport = nodemailer.createTransport('SMTP', {
  host : 'smtp.sina.com',
  secureConnection: true, // use SSL
  auth : {
    user : '你的邮箱地址',
    pass : '你的邮箱密码'
  },
});

2.3 发送邮件

/* 浏览器输入地址(如127.0.0.1:3000/sned)后即发送 */
router.get('/send', function(req, res, next) {
  var options = {
    from      : '"你的名字" <你的邮箱地址>',
    to       : '"用户1" <邮箱地址1>, "用户2" <邮箱地址2>',
    // cc     : ''  //抄送
    // bcc     : ''  //密送
    subject    : '一封来自Node Mailer的邮件',
    text      : '一封来自Node Mailer的邮件',
    html      : '<h1>你好,这是一封来自NodeMailer的邮件!</h1><p><img src="cid:00000001"/></p>',
    attachments  : 
          [
            {
              filename: 'img1.png',      // 改成你的附件名
              path: 'public/images/img1.png', // 改成你的附件路径
              cid : '00000001'         // cid可被邮件使用
            },
            {
              filename: 'img2.png',      // 改成你的附件名
              path: 'public/images/img2.png', // 改成你的附件路径
              cid : '00000002'         // cid可被邮件使用
            },
          ]
  };

  mailTransport.sendMail(options, function(err, msg){
    if(err){
      console.log(err);
      res.render('index', { title: err });
    }
    else {
      console.log(msg);
      res.render('index', { title: "已接收:"+msg.accepted});
    }
  });
});

如果你要发送附件,则先把要发送的文件放入工程中,并修改上面代码的附件的filename和path。

从代码中可以知道,要在邮件正文中添加图片,可以设置图片的cid,然后在img标签的src中设置为对应的cid即可。

注意,不建议在js代码中直接嵌入HTML代码,也不建议把图片加到邮件正文中。

3.测试

浏览器输入地址(如127.0.0.1:3000/sned)。

发送等待的时间视附件大小及网络带宽等因素不同,如果有一个很大的附件要发送,可能会等待很长时间;所以,建议在测试的时候使用小文件。

如果发送成功,会给出提示:

Node.js使用NodeMailer发送邮件实例代码

并在邮箱里收到相应的邮件:

Node.js使用NodeMailer发送邮件实例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery 设置标题的自动翻转
Oct 03 Javascript
Javascript 网页水印(非图片水印)实现代码
Mar 01 Javascript
js获取当月最后一天实例代码
Nov 19 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
Dec 19 Javascript
javascript 获取网页标题代码实例
Jan 22 Javascript
node.js超时timeout详解
Nov 26 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
Mar 25 Javascript
JS动态插入并立即执行回调函数的方法
Apr 21 Javascript
基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果
Jul 13 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
Nov 29 Javascript
详解Vue前端对axios的封装和使用
Apr 01 Javascript
微信小程序云开发之新手环境配置
May 16 Javascript
js eval函数使用,js对象和字符串互转实例
Mar 06 #Javascript
js实现4个方向滚动的球
Mar 06 #Javascript
Bootstrap输入框组件简单实现代码
Mar 06 #Javascript
原生JS实现圣旨卷轴展开效果
Mar 06 #Javascript
js中setTimeout的妙用--防止循环超时
Mar 06 #Javascript
Bootstrap表单简单实现代码
Mar 06 #Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
Mar 06 #Javascript
You might like
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
2008/11/14 PHP
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
2010/06/21 PHP
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
2011/11/26 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
php获取twitter最新消息的方法
2015/04/14 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
2012/09/11 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
node.js中的url.parse方法使用说明
2014/12/10 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
2016/08/09 Javascript
在Docker快速部署Node.js应用的详细步骤
2016/09/02 Javascript
jQuery实现的简单图片轮播效果完整示例
2018/02/08 jQuery
详解新手使用vue-router传参时注意事项
2019/06/06 Javascript
jQuery实现倒计时功能完整示例
2020/06/01 jQuery
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
[07:01]DOTA2-DPC中国联赛正赛 Aster vs Magma 3月5日 赛后选手采访
2021/03/11 DOTA
在Python的Django框架上部署ORM库的教程
2015/04/20 Python
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
Django如何实现密码错误报错提醒
2020/09/04 Python
python实现人性化显示金额数字实例详解
2020/09/25 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
美国在线面料商店:Online Fabric Store
2018/07/26 全球购物
高级技校毕业生自荐信
2013/11/18 职场文书
八年级数学教学反思
2014/01/31 职场文书
五分钟演讲稿
2014/04/30 职场文书
公司委托书格式范本
2014/09/16 职场文书
简易离婚协议书范本
2014/10/24 职场文书
优秀党员申报材料
2014/12/18 职场文书
2014年助理政工师工作总结
2014/12/19 职场文书
经理岗位职责
2015/02/02 职场文书
董事长助理岗位职责
2015/02/11 职场文书
关于nginx 实现jira反向代理的问题
2021/09/25 Servers
React更新渲染原理深入分析
2022/12/24 Javascript