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读取XML文件数据并显示的实现代码
Dec 16 Javascript
JQuery学习笔记 nt-child的使用
Jan 17 Javascript
JS隐藏参数post传值实例
Apr 18 Javascript
用jquery中插件dialog实现弹框效果实例代码
Nov 15 Javascript
JQuery基础语法小结
Feb 27 Javascript
jQuery ajaxForm()的应用
Oct 14 Javascript
ReactNative页面跳转Navigator实现的示例代码
Aug 02 Javascript
vue 自定义全局方法,在组件里面的使用介绍
Feb 28 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
Jan 24 Javascript
JS实现数组深拷贝的方法分析
Mar 06 Javascript
微信小程序云开发修改云数据库中的数据方法
May 18 Javascript
layui实现数据表格隐藏列的示例
Oct 25 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
一个好用的分页函数
2006/11/16 PHP
PHP常用处理静态操作类
2015/04/03 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
2016/10/11 PHP
ThinkPHP简单使用memcache缓存的方法
2016/11/15 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
js实现温度计时间样式代码分享
2015/08/21 Javascript
JavaScript严格模式详解
2015/11/18 Javascript
ES6概念 Symbol toString()方法
2016/12/25 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
vue 子组件watch监听不到prop的解决
2020/08/09 Javascript
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
Python实现将xml导入至excel
2015/11/20 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
对Python中实现两个数的值交换的集中方法详解
2019/01/11 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
python反转列表的三种方式解析
2019/11/08 Python
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
如何开启linux的ssh服务
2015/02/14 面试题
人事主管岗位职责范本
2013/12/04 职场文书
汽车销售员如何做职业生涯规划
2014/02/16 职场文书
保密普查工作实施方案
2014/02/25 职场文书
师恩难忘教学反思
2014/04/27 职场文书
消防工作实施方案
2014/06/09 职场文书
前台文员岗位职责
2015/02/04 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
MySQL创建管理KEY分区
2022/04/13 MySQL