Zoomla!逐浪CMS官网

最新版本号[免费下载]
逐浪软件

使用Node.JS发送网站告警邮件


作者:本站编辑 发布时间:2015-11-24 来源:本站原创 点击数:

最近项目需要实现这样一个异常报告的功能:网站管理系统出现错误时,自动发送错误报告的邮件给运维人员。

原先是直接通过捕获错误异常,然后直接发送邮件的。但是随着项目的增多,部署到多台服务器,各个项目都有相同的一套告警邮件发送代码,不方便对告警机制做统一的管理;随着项目规模扩大,为了快速定位和发现存在的问题,告警邮件发送功能必须做到实时且不拖累网站功能的正常使用。

由于历史原因,网站主要使用的语言是C#,考虑到方便迁移和IIS并发的不足,直接否定了用C#实现这个告警系统的方案。考察了PHP、Python和Node.js以后,决定用Node.js来实现,因为和PHP、Python相比,满足以上的业务需求和性能需求,且足够的小巧,还方便部署。

由于之前没有Node.js的实际开发经验,只是跑了跑例子,所以还是去Google了一把“Node.js send mail”,找到了这个node_mailer ,按照Readme里面的步骤安装好node_mailer,并运行里面的例子,我稍微小修改了下,去掉了for循环:

var email = require("../lib/node_mailer");
email.send({
  host : "localhost",           // smtp server hostname
  port : "25",                 // smtp server port
  ssl: true,                        // for SSL support
  domain : "localhost",       // domain used by client to identify itself to server
  to : "***@gmail.com",
  from : "***@whitehouse.gov",
  subject : "node_mailer test email",
  body: "Hello! This is a test of the node_mailer.",
  authentication : "login",   // auth login is supported; anything else is no auth
  username : "my_username",        // username
  password : "my_password"         // password
},
function(err, result){
  if(err){ console.log(err); }
});

但是一直报错:cannot find moudel ”../lib/node_mailer”,修改为:

require("node_mailer");


也是一样找不到mooudel。Google到这篇 《Windows下 NodeJS 全局安装 modules 后在应用中 require 不到的解决方案》,添加 NODE_PATH以后,把代码改为如下:

var email = require("mailer");
 
email.send({
        host : "smtp.gmail.com",
        port : "25",
        ssl: true,
        domain : "smtp.gmail.com",
        to : "****@gmail.com",
        from : "****@gmail.com",
        subject : "node_mailer test email",
        body: "Hello! This is a test of the node_mailer.",
        authentication : "login",
        username : "****@gmail.com",
        password : "****"
    },
    function(err, result){
      if(err){ console.log(err); }
});

require的错误是没有了,但是:运行之后报“TypeError: Object # has no method ‘send’”错误。我在CNodejs.org发了这个帖子:《Node.js发送邮件,报no method ‘send’错误》,但是最终也还没有人答复我。

好吧,自力更生;不管白猫黑猫,能抓到老鼠的猫就是好猫。又Google到了Nodemailer,并通过特别注意下列方法把它install到全局模块:

npm install -g nodemailer

直接运行示例里面的代码:

var nodemailer = require("nodemailer");
 
// create reusable transport method (opens pool of SMTP connections)
var smtpTransport = nodemailer.createTransport("SMTP",{
    service: "Gmail",
    auth: {
        user: "gmail.user@gmail.com",
        pass: "userpass"
    }
});
 
// setup e-mail data with unicode symbols
var mailOptions = {
    from: "Sender Name ✔ <sender@example.com>", // sender address
    to: "receiver1@example.com, receiver2@example.com", // list of receivers
    subject: "Hello ✔", // Subject line
    text: "Hello world ✔", // plaintext body
    html: "<b>Hello world ✔</b>" // html body
}
 
// send mail with defined transport object
smtpTransport.sendMail(mailOptions, function(error, response){
    if(error){
        console.log(error);
    }else{
        console.log("Message sent: " + response.message);
    }
 
    // if you don’t want to use this transport object anymore, uncomment following line
    //smtpTransport.close(); // shut down the connection pool, no more messages
});
本文责任编辑:  加入会员收藏夹 点此参与评论>>
当前网址:
复制本网址-发给QQ/微信上的朋友

+什么是CMS

CMS(Content Management System)是网站内容管理系统简称, 互联网上每个网站(无论大小门户)其后台都由专业CMS系统支撑- Zoomla!逐浪CMS作为国内高端CMS与WEB应用典范,首创第3代CMS理念,专注底层核心技术研发,以云技术、创新精神构建行业新成就,提供从网站内核到电商、办公、移动一体化的开发体验!

7×24小时服务热线 021-50391046 技术支持:13177777714
©Copyright 2003- 逐浪软件z01.com版权所有 All rights reserved
经营许可证号:工商3601002021063 沪ICP备09077823号 沪公网安备31011502000316号
本网站基于®Zoomla!逐浪CMS内核开发

ISO9001国际认证企业 CSDN外包TOP资质 鉴赏MTV电广视告 7×24小时全天候贴心服务 社会征信网