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 相关文章推荐
表单提交时自动复制内容到剪贴板的js代码
Mar 16 Javascript
jQuery代码优化 遍历篇
Nov 01 Javascript
js解决select下拉选不中问题
Oct 14 Javascript
angularjs指令中的compile与link函数详解
Dec 06 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
Feb 20 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
Jul 19 Javascript
Bootstrap 模态框(Modal)插件代码解析
Dec 21 Javascript
JS中使用 after 伪类清除浮动实例
Mar 01 Javascript
Node.js使用gm拼装sprite图片
Jul 04 Javascript
实例分析js事件循环机制
Dec 13 Javascript
微信小程序实现按字母排列选择城市功能
Nov 25 Javascript
详解Javascript实践中的命令模式
May 05 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详细彻底学习Smarty
2008/03/27 PHP
php.ini 配置文件的深入解析
2013/06/17 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
清除网页历史记录,屏蔽后退按钮!
2008/12/22 Javascript
Javascript Select操作大集合
2009/05/26 Javascript
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
2015/10/29 Javascript
js实现文件上传表单域美化特效
2015/11/02 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
2019/05/09 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
详解package.json版本号规则
2019/08/01 Javascript
vue+eslint+vscode配置教程
2019/08/09 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
Python的print用法示例
2014/02/11 Python
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
Python实现查看系统启动项功能示例
2018/05/10 Python
分析python请求数据
2018/08/19 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
PyQt5结合matplotlib绘图的实现示例
2020/09/15 Python
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
医学院护理专业应届生求职信
2013/11/12 职场文书
编辑硕士自荐信范文
2013/11/27 职场文书
最热门的自我评价
2013/12/30 职场文书
自我评价格式
2014/01/06 职场文书
销售职业生涯规划范文
2014/03/14 职场文书
医院深入开展党的群众路线教育实践活动实施方案
2014/08/27 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
详解python的内存分配机制
2021/05/10 Python