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 研究心得 取得属性的值
Nov 30 Javascript
js随机颜色代码的多种实现方式
Apr 23 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
Jan 11 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
Sep 01 Javascript
JS简单实现无缝滚动效果实例
Aug 24 Javascript
Ionic默认的Tabs模板使用实例
Aug 29 Javascript
详解基于webpack2.x的vue2.x的多页面站点
Aug 21 Javascript
Vue循环组件加validate多表单验证的实例
Sep 18 Javascript
vue+element 模态框表格形式的可编辑表单实现
Jun 07 Javascript
WEB前端性能优化的7大手段详解
Feb 04 Javascript
JS代码简洁方式之函数方法详解
Jul 28 Javascript
Vue3.0的优化总结
Oct 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中看实例学正则表达式
2006/12/25 PHP
zend api扩展的php对象的autoload工具
2011/04/18 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
php 问卷调查结果统计
2015/10/08 PHP
Symfony2 session用法实例分析
2016/02/04 PHP
php实现多维数组排序的方法示例
2017/03/23 PHP
PHP数组Key强制类型转换实现原理解析
2020/09/01 PHP
几个高效,简洁的字符处理函数
2007/04/12 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
2015/04/16 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
2015/06/25 Javascript
微信小程序 出现47001 data format error原因解决办法
2017/03/10 Javascript
深入理解Angular中的依赖注入
2017/06/26 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
Python中操作MySQL入门实例
2015/02/08 Python
python中split方法用法分析
2015/04/17 Python
Python3.x中自定义比较函数
2015/04/24 Python
常见的python正则用法实例讲解
2016/06/21 Python
python smtplib模块自动收发邮件功能(一)
2018/05/22 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
什么是.net的Remoting技术
2016/07/08 面试题
实习护理工作自我评价
2013/09/25 职场文书
医学生自荐信范文
2013/12/03 职场文书
幼儿园托班开学寄语
2014/01/18 职场文书
生产部岗位职责范文
2014/02/07 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
现实表现证明材料
2015/06/19 职场文书