nodejs邮件模块nodemailer的使用说明

1.介绍

nodemailer是node的一个发送邮件的组件,其功能相当强大,普通邮件,传送附件,邮件加密等等都能实现,而且操作也十分方便。

nodemailer在GitHub上的项目地址为https://github.com/andris9/Nodemailer

本文将说明如何使用163邮箱发送邮件,由于所学疏浅,这里纯属抛砖引玉,有什么问题或好的建议还请补充。

2.示例

2.1.准备

新建一个项目nodesend,并安装依赖包,设置app.js启动,修改ejs模板支持html。

2.2修改前台界面

修改view目录下的index.ejs为index.html,并重新编写界面。本次前台界面尝试用表单提交方式。示例代码如下:

<!DOCTYPE html>
<html>
<head>
<title>Nodejs之发送邮件nodemailer</title>
<link rel='stylesheet' href='/stylesheets/style.css'/>
</head>
<body>
<div style="text-align: center">
<% if(typeof(message) !== 'undefined' && message){ %>
<div>
<% if(message.match("成功")){ %>
<p style="color: #0effa5;"><%= message %></p>
<% } else { %>
<p style="color: #ff0000;"><%= message %></p>
<% } %>
</div>
<% } %>
<form id='mailsend' action='/mails' method='post'>
<div>
<label for='mail'>邮箱地址</label>
<input id='mail' name='mailaddress' type='text'/>
<input type='submit' value='Send'/>
</div>
</form>
</div>
</body>
</html>

完成后界面风格:

2.3配置路由

在app.js中,有如下代码,这里不再修改,直接根据请求修改routes目录下的index.js文件。

app.use('/', routes);
app.use('/users', users);

打开index.js文件,添加路由方法寻找控制台。

router.post('/mails', nodemail.sendmail);

添加完成后,在nodemail.js文件中,添加sendmaill方法。

2.4实现操作处理

打开nodemail.js文件,导入发送邮件模块,并添加判断方法:

判断邮件地址是否为空,邮件地址是否合法,发送邮件等。

var nodemailer = require('nodemailer');

exports.sendmail = function (req, res, next) {
var mail = req.body.mailaddress;
//检测邮箱地址是否为空
if (!mail) {
return res.render("index", {message: "请输入邮箱地址!"});
}
//检测邮箱地址是否符合规范
var reg = /^[A-Za-z0-9]+([-_.][A-Za-z0-9]+)*@([A-Za-z0-9]+[-.])+[A-Za-z0-9]{2,5}$/;
if (!mail.match(reg)) {
return res.render("index", {message: "邮箱地址不符合规范,请重新输入!"});
}
//邮件发送
var transporter = nodemailer.createTransport({
service: '163',
auth: {
user: '',//你的163邮箱账号
pass: ''//你的163邮箱密码
}
});
var mailOptions = {
from: '', // sender address
to:mail, // list of receivers
subject: '测试邮件', // Subject line
text: 'Nodejs之邮件发送', // plaintext body
html:"<h2>欢迎关注我的GitHub,一起学习Nodejs。https://github.com/Chen-xy</h2>"
}; transporter.sendMail(mailOptions, function(error, info){
if(!error){
return res.render("index", {message: "邮件发送成功,请注意查收!"});
}else{
console.log(error);
return res.render("index", {message: "邮件发送失败,请稍后重试!"});
}
}); };

其中:

transporter:填写邮箱配置,使用的邮箱名称及账号密码等。

mailOptions:填写邮件内容,发件人,收件人,标题,内容,附件等等。

最后,判断,返回。

3.补充说明

3.1:

根据简单的示例可以看出,node的实现过程是:

前台界面----->项目入口app.js------>根据请求方式,找到路由routes------->根据处理方式,找到实现方法controllers------>添加方法实现。

基本上所有的项目都是按照这个思路来走,所以,只需按照代码实现思路即可。

3.2:

这里第一次尝试使用form表单提交的方式,同时使用了ejs,所以有些地方难免实现处理的不是很好,像页面中邮箱的格式判断等都可以交给js界

面来实现,应该会节省一些时间,之前有考虑过使用js,然而表单提交时监听onsubmit事件时,虽然能触发,但是表单还是提交了,所以,这个问题

就先放在这,感兴趣的可以自己尝试。

3.3:

邮件发送时因为还有一个邮箱响应的一个因素,所以不同的邮箱可能会有不同的处理时长,我试验时,163邮箱的处理速度可能比QQ的会慢一些。

另外,使用邮箱时都需要在邮箱设置中开启SMTP服务,QQ邮箱在开启时可能还需设置独立的邮箱密码。

3.4:

不好意思,补充的太多了,但是我还是要说。

nodemailer的配置中并没有添加对163邮箱或其他一些邮箱的支持,前期我尝试使用163邮箱时也总是失败,后来摸索了很久才终于成功。

nodemailer的配置文件如图所示:

其中services.json就是,在其中添加上163邮箱的配置即可,本项目代码示例中已添加。可直接上GitHub上查看或下载。

3.5:

这篇博客写起来,包括项目搭建,调试,组织语言,用了整整一上午的时间,真的真的,,不想再说了,如果大家觉得写的还好,还请多多鼓励支持。

有问题可以留言。

代码示例地址:https://github.com/Chen-xy/mailsend

其它的没了,以后想起来了,会补充。

Nodejs之发送邮件nodemailer的更多相关文章

  1. Node.js 发送Email

    章节 Node.js 介绍 Node.js 入门 Node.js 模块 Node.js HTTP模块 Node.js 文件系统模块 Node.js URL模块 Node.js NPM Node.js ...

  2. 基于 Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册

    项目地址:https://github.com/caochangkui/vue-element-responsive-demo/tree/login-register 通过 vue-cli3.0 + ...

  3. 使用Nodejs的Nodemailer通过163信箱发送邮件例程

    首先需要安装一下nodemailer #nmp nodemailer install --save 然后就参照官方文档的例程改写一下就行了,代码如下: 'use strict'; const node ...

  4. 使用nodemailer发送邮件

    今天闲来无事,一时兴起看了下如果使用javascript来发送邮件.经过调研发现,nodeJs可以实现这个功能. 具体的步骤如下: 1.安装依赖 npm install nodemailer -g ( ...

  5. 关于nodejs的几个干货(读中文文件编码问题/发送邮件/定时任务)

    关于nodejs读取中文文件真是折腾了不少时间,网上各种方案,最后没有一个适用我,好在解决了. 下面的三个知识点都是从项目中抽出的,要单独运行脚本的话需要用全局模式来安装模块,比如安装中文转换模块(后 ...

  6. nodejs 发送邮件(阿里云)

    1.下载  模块 2.  编辑文件 var nodemailer = require('nodemailer'); var sendEmail = function(emailinfo,callbac ...

  7. nodemailer实现node发送邮件

    作为一个前端er,利用node独立做一些全栈小项目,是很有效率和必要的. 需要: 做一个活动报名页面,用户填好的表单需要被工作人员收到,一想到把数据存数据库,还需要给工作人员写一个管理页面就觉得很麻烦 ...

  8. nodejs & nodemailer

    nodejs & nodemailer https://www.npmjs.com/package/nodemailer 上面的連接裏面 有有一個例子: 可以直接拿來用: 安裝依賴,在pack ...

  9. 基于nodemailer使用阿里云企业邮箱发送邮件(526错误的解决)

    在虽然日常生活中,QQ,微信等即时聊天工具几乎主导了人们的生活,但是邮件依然是现代生活不可缺少的一部分.这篇文章主要讲述使用node.js 中的nodemail模块操作阿里云的企业邮箱发送邮件 (52 ...

随机推荐

  1. web.xml中常用元素的解读

    前言 针对一个项目而言,通常会有几类XML文件需要书写. web.xml spring-context.xml spring-mvc.xml other.xml ... 不管有多少配置文件,可以肯定的 ...

  2. 业务零影响!如何在Online环境中巧用MySQL传统复制技术【转】

    业务零影响!如何在Online环境中巧用MySQL传统复制技术 这篇文章我并不会介绍如何部署一个MySQL复制环境或keepalived+双主环境,因为此类安装搭建的文章已经很多,大家也很熟悉.在这篇 ...

  3. CSS样式覆盖规则

    有一下问题, 想让下面的border生效 ,#比. 优先级高, #navigator { height: 100%; width: 200; position: absolute; left: 0; ...

  4. 关于tomcat配置MyEclipse项目的配置代码

    例如:<Context path="/shis" docBase="E:\Genuitec\Workspaces\MyEclipse 8.6\zwfw_platfo ...

  5. Hadoop 文本分类 终于跑通了

    Training 入口 package org.wordCount; import java.util.ArrayList; import java.util.List; import org.apa ...

  6. brbustoj 1818 石子合并问题--直线版

    比较经典且基础的区间dp,转移方程为 dp_max[i][j] = max(dp_max[i][j],dp_max[i][k] + dp_max[k+1][j] + sum[j]-sum[i-1]); ...

  7. Linux批量部署工具Expect

    既然没有遇到过,做好准备总是好的.这是自己送给自己的话,现在运维做自动话越来越多,自己就学以下,记录笔记.目前主流的有puppet.Expect.pssh等等,今天就用Expect做自动部署和日常管理 ...

  8. gcd timer

    //0.创建队列 dispatch_queue_t queue = dispatch_get_global_queue(, ); NSLog(@"%s",__func__); // ...

  9. ssl通信c实现

    /*File:client.c *Auth:sjin *Date:2014-03-11 * */ #include <stdio.h>#include <string.h>#i ...

  10. flexpaper二次开发

    1.首先下载FlexPaper的源码.下载地址 2.本人不懂flash,只是百度下,然后自己瞎弄弄的.我用的flash build 4.5 提供个key:1499-4181-9296-6452-299 ...