02月21, 2017

node-mail笔记

node发送邮件的相关文章,还是蛮多的,我从自己的角度出发来尝试一下吧。

QQ邮箱作为发送者,其他邮箱作为接收者

简单代码如下:

var nodemailer = require("nodemailer");
var transporter = nodemailer.createTransport({
    //https://github.com/andris9/nodemailer-wellknown#supported-services 支持列表
    service: "qq",
    port: 465, // SMTP 端口
    secureConnection: true, // 使用 SSL
    auth: {
        user: "1420488496@qq.com",
        //这里密码不是qq密码,是你设置的smtp密码
        pass: "*********"
    }
});

// NB! No need to recreate the transporter object. You can use
// the same transporter object for all e-mails

// setup e-mail data with unicode symbols
var mailOptions = {
    from: "1420488496@qq.com", // 发件地址
    to: "Henry_zp@163.com", // 收件列表
    subject: "Hello ....", // 标题
    //text和html两者只支持一种
    html: "what are you doing?" // html 内容
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
    if(error){
        return console.log(error);
    }
    console.log("Message sent: " + info.response);

});

邮件发送成功效果图如下:

email success

这里需要注意的是上面auth中的pass,如果邮箱有开独立密码,那就是邮箱的独立密码。如果没有独立密码,则需要授权码

另外就是html里面的资源,必须要用绝对路径。依稀记得几年前有做过邮件方面的切图,要想让排版工整的话,得用table布局才行。当然了,简单的消息通知是不需要的,因为之前做的是电商广告那种一块块的内容。

163邮箱作为发送者,其他邮箱作为接收者

var nodemailer = require("nodemailer");
var transporter = nodemailer.createTransport({
    host: "smtp.163.com",
    port: 465,
    secureConnection: true, // 使用 SSL
    auth: {
        user: "Henry_zp@163.com",
        //如果你的163设置了第三方登录密码的话这里要填你的第三方登录密码
        pass: "*********"
    }
});

// NB! No need to recreate the transporter object. You can use
// the same transporter object for all e-mails

// setup e-mail data with unicode symbols
var mailOptions = {
    from: "Henry_zp@163.com", // 发件地址
    to: "1420488496@qq.com", // 收件列表
    subject: "工作汇报", // 标题
    //text和html两者只支持一种
    html: "hello zpu" // html 内容
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
    if(error){
        return console.log(error);
    }
    console.log("Message sent: " + info.response);

});

邮件发送成功效果图如下:

email success 一开始我的subject是“测试”,然而会报下面的错误:

554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件;

查了一下才清楚,原来是subject的问题,MS改成“Hello”,还是不行。。用中文的“工作汇报”就通过了,猜测是有过滤词吧。

cc和bcc

  • TO: 是收件人
  • CC: 是抄送,用于通知相关的人,收件人可以看到都邮件都抄送给谁了。一般回报工作或跨部门沟通时,都会CC给收件人的领导一份
  • BCC:是密送,也是用于通知相关的人,但是收件人是看不到邮件被密送给谁了。
var mailOptions = {
    from: "from@163.com>", // sender address
    to: "to@163.com", // list of receivers
    cc: "cc@163.com",
    bcc: "bcc@126.com",
    subject: "Hello ✔", // Subject line
    text: "Hello world ✔", // plaintext body
    html: "<b>Hello world ✔</b>" // html body
};

经测试,163作为发送者,bcc似乎发不出去。。用qq作为发送者,是ok的。

附件发送

配置如下:

var mailOptions = {
    from: "1420488496@qq.com", // 发件地址
    to: "675924798@qq.com", // 收件列表
    subject: "测试", // 标题
    //text和html两者只支持一种
    html: "。。。。",
    attachments: [
        {
            filename: "text0.txt",
            content: "hello world!"
        },
        {
            filename: "a.txt",
            path: "./text1.txt"
        }
    ]
};

第一个是写内容,第二个是读取本地文件。

HTML嵌入本地图片

var mailOptions = {
    from: "1420488496@qq.com", // 发件地址
    to: "675924798@qq.com", // 收件列表
    subject: "测试", // 标题
    //text和html两者只支持一种
    html: "<img src="cid:001"/>",
    attachments: [
        {
            filename: "text0.txt",
            content: "hello world!"
        },
        {
            filename: "a.png",
            path: "./tuijian-icon.png",
            cid: "001"
        }
    ]
};

参考资料

本文链接:www.my-fe.pub/post/node-mail.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。