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 相关文章推荐
常见浏览器多长时间会提示“脚本运行时间过长”总结
Apr 29 Javascript
jquery 按键盘上的enter事件
May 11 Javascript
node.js中的buffer.toString方法使用说明
Dec 14 Javascript
使用javascript实现简单的选项卡切换
Jan 09 Javascript
javascript制作sql转换为stringBuffer的小工具
Apr 03 Javascript
js简单实现调整网页字体大小的方法
Jul 23 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
Nov 17 Javascript
JavaScript事件委托原理与用法实例分析
Jun 07 Javascript
vue获取时间戳转换为日期格式代码实例
Apr 17 Javascript
详解小程序退出页面时清除定时器
Apr 28 Javascript
JS为什么说async/await是generator的语法糖详解
Jul 11 Javascript
微信小程序全选多选效果实现代码解析
Jan 21 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
UCenter 批量添加用户的php代码
2012/07/17 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
CSS常用网站布局实例
2008/04/03 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
jquery中获取select选中值的代码
2011/06/27 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
2014/04/17 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
js装饰设计模式学习心得
2018/02/17 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
es6中let和const的使用方法详解
2020/02/24 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
微信小程序自定义yPicker组件实现省市区三级联动功能
2020/10/29 Javascript
vue实现滚动鼠标滚轮切换页面
2020/12/13 Vue.js
python海龟绘图实例教程
2014/07/24 Python
python的Template使用指南
2014/09/11 Python
Python中用于检查英文字母大写的isupper()方法
2015/05/19 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
Python字节单位转换实例
2019/12/05 Python
python判断是空的实例分享
2020/07/06 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
Django数据库迁移常见使用方法
2020/11/12 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
JAVA程序员面试题
2012/10/03 面试题
构建高效课堂实施方案
2014/03/13 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
先进党支部申报材料
2014/12/24 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
应收账款管理制度
2015/08/06 职场文书
《风筝》教学反思
2016/02/23 职场文书
详解如何在Canvas中添加事件的方法
2021/04/17 Javascript
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript
vue使用节流函数的踩坑实例指南
2021/05/20 Vue.js