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 相关文章推荐
在html页面中包含共享页面的方法
Oct 24 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
Jun 27 Javascript
js实现幻灯片播放图片示例代码
Nov 07 Javascript
使用jQuery设置disabled属性与移除disabled属性
Aug 21 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
Feb 26 Javascript
微信小程序 生命周期详解
Oct 12 Javascript
javascript 秒表计时器实现代码
Mar 09 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
Aug 24 Javascript
webpack 单独打包指定JS文件的方法
Feb 22 Javascript
对angularJs中自定义指令replace的属性详解
Oct 09 Javascript
fetch 如何实现请求数据
Dec 20 Javascript
使用preload预加载页面资源时注意事项
Feb 03 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 fsockopen写的HTTP下载的类
2007/02/22 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
php中get_object_vars()在数组的实例用法
2021/02/22 PHP
jQuery中$.each使用详解
2015/01/29 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
手把手教你 CKEDITOR 4 扩展插件制作
2019/06/18 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
小程序自定义模板实现吸顶功能
2020/01/08 Javascript
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
python采集博客中上传的QQ截图文件
2014/07/18 Python
Python每天必学之bytes字节
2016/01/28 Python
python3实现跳一跳点击跳跃
2018/01/08 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
浅谈pytorch池化maxpool2D注意事项
2020/02/18 Python
opencv 图像腐蚀和图像膨胀的实现
2020/07/07 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
2020/11/09 Python
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
经典C++面试题一
2016/11/06 面试题
TCP/IP的分层模型
2013/10/27 面试题
武汉瑞得软件笔试题
2015/10/27 面试题
工程招投标邀请书
2014/01/30 职场文书
2014年社区植树节活动方案
2014/02/28 职场文书
广告创意求职信
2014/03/17 职场文书
酒店节能减排方案
2014/05/26 职场文书
三严三实对照检查材料
2014/09/22 职场文书
先进班组事迹材料
2014/12/25 职场文书
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记