使用NodeJS搭建邮件自动发送服务器


发布者 kris  发布时间 1403839329537
关键字 JS开源  开源 
注* 你无法通过此功能自动群发垃圾邮件,一般大型邮件服务商对发送次数和间隔有限制,数量过大被会屏蔽,请紧慎使用。

简介


Nodemailer 是一款简单易用的基于于SMTP协议(或 Amazon SES)的,用nodejs写的邮件发送组件,目前支持绝大多数主流邮箱,如QQ邮箱,Gmail等;与网站集成起来非常容易,几行代码即可实现邮箱验证,密码修改等需要使用自动邮件发送的功能。


安装


通过npm安装一行命令即可,确保之前已经安装过node.js  

npm install nodemailer --save


测试


创建一个js文件,如 mail.js,写入如下内容,将user/pass改成你自己的用户名密码

var nodemailer  = require("nodemailer");
var user = '00000000@qq.com'
  , pass = 'XXXXXXXXX'
  ;
var smtpTransport = nodemailer.createTransport("SMTP", {
      service: "QQ"
    , auth: {
        user: user,
        pass: pass
    }
  });
smtpTransport.sendMail({
    from    : 'Kris<' + user + '>'
  , to      : '<kris@domain.com>'
  , subject : 'Node.JS通过SMTP协议从QQ邮箱发送邮件'
  , html    : '这是一封测试邮件 <br> '
}, function(err, res) {
    console.log(err, res);
});


运行


命令行输入:

node mail


结果


下列信息代表你的QQ邮箱没有开启SMTP邮件发送,在QQ邮箱找到相应配置,开启即可。

$ node mail
{ [AuthError: Invalid login - 454 Authentication failed, please open smtp flag first!]
  name: 'AuthError',
  data: '454 Authentication failed, please open smtp flag first!',
  stage: 'auth' } undefined

发送成功的标志

$ node mail
null { message: '250 Ok: queued as',
  messageId: '918d1724d950d2dc3aef42b7e7f64d@pvgd50816637a' }


更新



如果碰到错误:

[Error: Unsupported configuration, downgrade Nodemailer to v0.7.1 to use it]

说明你和的NodeMail比较新,NodeMailer 1.10.x 以上版本将不再需要设置 SMTP 类型参数

var smtpTransport = nodemailer.createTransport({
      service: "QQ"
    , auth: {
        user: user,
        pass: pass
    }
  });

利用telnet进行SMTP的验证

telnet: > telnet mx1.example.com smtp
telnet: Trying 192.0.2.2...
telnet: Connected to mx1.example.com.
telnet: Escape character is '^]'.
server: 220 mx1.example.com ESMTP server ready Tue, 20 Jan 2004 22:33:36 +0200
client: HELO client.example.com
server: 250 mx1.example.com
client: MAIL from: <sender@example.com>
server: 250 Sender <sender@example.com> Ok
client: RCPT to: <recipient@example.com>
server: 250 Recipient <recipient@example.com> Ok
client: DATA
server: 354 Ok Send data ending with <CRLF>.<CRLF>
client: From: sender@example.com
client: To: recipient@example.com
client: Subject: Test message
client: 
client: This is a test message.
client: .
server: 250 Message received: 20040120203404.CCCC18555.mx1.example.com@client.example.com
client: QUIT
server: 221 mx1.example.com ESMTP server closing connection





回复 (14)
  • #
  • #1 taevas 1432734764170

    请问为什么是kris ?

  • #2 ourjs 1432881918857

    @taevas #0

    是用户 kris 发布的文章。

  • #3 小菜 1438134160151

    我想知道你说的 注* 你无法通过此功能自动群发垃圾邮件,一般大型邮件服务商对发送次数和间隔有限制,数量过大被会屏蔽。 这句话是指对方的服务器还是这个模块用的是第三方服务器发送?

  • #4 ourjs 1438138792243

    @小菜 #2

    模块本身没有限制,一般是邮件服务提供商的限制。

  • #5 樊支册 1451496278005

  • #6 疑似风月 1460381704911

    这些命令字符是在哪里写?cmd命令字符还是linux服务器或者JavaScript上?新手现在看的一团乱,拜托了,希望您能详细解答下,万分感谢!

  • #7 施它卡 1461145159242

    赛博国际亚洲官网:http://www.saibet666.com打造全亚洲最顶级的娱乐平台!顶级信誉,玩家首先!手机APP客户端

  • #8 饶汁十 1482163099244
    1. 列表

      标题 ##强调文本

    加粗文本

    int main()
    


    ##

  • #9 胡午巴 1494402018828

    @疑似风月 #5

    命令都是Unix命令,可以在Mac或Linux的shell上执行,windows上的命令有点不同

  • #10 张亦牙 1503559126576

    这是邮件服务器吗!!!这是第三方服务器,你只是用人家的东西!

  • #11 褚半竹 1517966699942

    坑爹啊,这叫邮件服务器?

  • #12 邱尸永 1522052541788

    这叫邮件服务器?

  • #13 ojwvihkry 1527239340622

    这叫邮件服务器?

  • #14 武立气 1540514305550

    @疑似风月 #5

    在node.js编译器上运行

微信扫码 立即评论