Node.js - 群发邮件

一、安装邮件服务模块 - nodemailer

npm install --save nodemailer 

 

 

二、新建一个 js 文件,配置 nodemailer (下面以 QQ 邮箱为例)

"use strict";

const nodemailer = require('nodemailer'); // 引入 nodemailder
let Email_QQ = {
    // 以 QQ 邮箱为例子代码如下,如需配置其他邮箱,可查看文章第三点 nodemailer 各邮箱相关配置 
    host: 'smtp.qq.com',
    port: 465,
    secure: true,
    auth: {
        user: '9999999@qq.com', // 发送人邮箱
        // 这里是 stmp 授权码,并非邮箱密码,
        // 如未开通 stmp 请查阅 https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
        pass: 'qqqqqqqqqqqqqq'
    }
}

function sendEMail(mail, text) {
    // 创建发送邮件服务 nodemailer 对象,传入 QQ 设置,当然你也可以开发接口从前端传入不同的 user 和对应的 pass
    let transporter = nodemailer.createTransport(Email_QQ);

    // 邮件的相关信息
    let msg = {
        from: '9999999@qq.com', // 发送人邮箱
        to: mail, // 接收者邮箱,多个邮箱用逗号间隔

        subject: 'nodemailer 群发邮件测试~~!', // 邮件标题

        // text: '纯文本内容。。。', // text 和 html 属性二选一
        html: text // html 文本内容,可以添加 html 元素
    }

    // 发送邮件
    transporter.sendMail(msg, (err, res) => {

        if (res) {
            let len = res.accepted.length
            let from = res.envelope.from
            console.log('已从' + from + '邮箱成功发出' + len + '个邮件')
        } else {
            console.log('err : ', err)
        }
    })
}
module.exports = sendEMail;

 

 

 

三、nodemailer 各邮箱相关配置

{
    "1und1": {
        "host": "smtp.1und1.de",
        "port": 465,
        "secure": true,
        "authMethod": "LOGIN"
    },

    "AOL": {
        "domains": ["aol.com"],
        "host": "smtp.aol.com",
        "port": 587
    },

    "DebugMail": {
        "host": "debugmail.io",
        "port": 25
    },

    "DynectEmail": {
        "aliases": ["Dynect"],
        "host": "smtp.dynect.net",
        "port": 25
    },

    "FastMail": {
        "domains": ["fastmail.fm"],
        "host": "smtp.fastmail.com",
        "port": 465,
        "secure": true
    },

    "GandiMail": {
        "aliases": ["Gandi", "Gandi Mail"],
        "host": "mail.gandi.net",
        "port": 587
    },

    "Gmail": {
        "aliases": ["Google Mail"],
        "domains": ["gmail.com", "googlemail.com"],
        "host": "smtp.gmail.com",
        "port": 465,
        "secure": true
    },

    "Godaddy": {
        "host": "smtpout.secureserver.net",
        "port": 25
    },

    "GodaddyAsia": {
        "host": "smtp.asia.secureserver.net",
        "port": 25
    },

    "GodaddyEurope": {
        "host": "smtp.europe.secureserver.net",
        "port": 25
    },

    "hot.ee": {
        "host": "mail.hot.ee"
    },

    "Hotmail": {
        "aliases": ["Outlook", "Outlook.com", "Hotmail.com"],
        "domains": ["hotmail.com", "outlook.com"],
        "host": "smtp.live.com",
        "port": 587
    },

    "iCloud": {
        "aliases": ["Me", "Mac"],
        "domains": ["me.com", "mac.com"],
        "host": "smtp.mail.me.com",
        "port": 587
    },

    "mail.ee": {
        "host": "smtp.mail.ee"
    },

    "Mail.ru": {
        "host": "smtp.mail.ru",
        "port": 465,
        "secure": true
    },

    "Maildev": {
        "port": 1025,
        "ignoreTLS": true
    },

    "Mailgun": {
        "host": "smtp.mailgun.org",
        "port": 465,
        "secure": true
    },

    "Mailjet": {
        "host": "in.mailjet.com",
        "port": 587
    },

    "Mailosaur": {
        "host": "mailosaur.io",
        "port": 25
    },

    "Mailtrap": {
        "host": "smtp.mailtrap.io",
        "port": 2525
    },

    "Mandrill": {
        "host": "smtp.mandrillapp.com",
        "port": 587
    },

    "Naver": {
        "host": "smtp.naver.com",
        "port": 587
    },

    "One": {
        "host": "send.one.com",
        "port": 465,
        "secure": true
    },

    "OpenMailBox": {
        "aliases": ["OMB", "openmailbox.org"],
        "host": "smtp.openmailbox.org",
        "port": 465,
        "secure": true
    },

    "Outlook365": {
        "host": "smtp.office365.com",
        "port": 587,
        "secure": false
    },

    "Postmark": {
        "aliases": ["PostmarkApp"],
        "host": "smtp.postmarkapp.com",
        "port": 2525
    },

    "qiye.aliyun": {
        "host": "smtp.mxhichina.com",
        "port": "465",
        "secure": true
    },

    "QQ": {
        "domains": ["qq.com"],
        "host": "smtp.qq.com",
        "port": 465,
        "secure": true
    },

    "QQex": {
        "aliases": ["QQ Enterprise"],
        "domains": ["exmail.qq.com"],
        "host": "smtp.exmail.qq.com",
        "port": 465,
        "secure": true
    },

    "SendCloud": {
        "host": "smtpcloud.sohu.com",
        "port": 25
    },

    "SendGrid": {
        "host": "smtp.sendgrid.net",
        "port": 587
    },

    "SendinBlue": {
        "host": "smtp-relay.sendinblue.com",
        "port": 587
    },

    "SendPulse": {
        "host": "smtp-pulse.com",
        "port": 465,
        "secure": true
    },

    "SES": {
        "host": "email-smtp.us-east-1.amazonaws.com",
        "port": 465,
        "secure": true
    },

    "SES-US-EAST-1": {
        "host": "email-smtp.us-east-1.amazonaws.com",
        "port": 465,
        "secure": true
    },

    "SES-US-WEST-2": {
        "host": "email-smtp.us-west-2.amazonaws.com",
        "port": 465,
        "secure": true
    },

    "SES-EU-WEST-1": {
        "host": "email-smtp.eu-west-1.amazonaws.com",
        "port": 465,
        "secure": true
    },

    "Sparkpost": {
        "aliases": ["SparkPost", "SparkPost Mail"],
        "domains": ["sparkpost.com"],
        "host": "smtp.sparkpostmail.com",
        "port": 587,
        "secure": false
    },

    "Tipimail": {
        "host": "smtp.tipimail.com",
        "port": 587
    },

    "Yahoo": {
        "domains": ["yahoo.com"],
        "host": "smtp.mail.yahoo.com",
        "port": 465,
        "secure": true
    },

    "Yandex": {
        "domains": ["yandex.ru"],
        "host": "smtp.yandex.ru",
        "port": 465,
        "secure": true
    },

    "Zoho": {
        "host": "smtp.zoho.com",
        "port": 465,
        "secure": true,
        "authMethod": "LOGIN"
    },

    "126": {
        "host": "smtp.126.com",
        "port": 465,
        "secure": true
    },

    "163": {
        "host": "smtp.163.com",
        "port": 465,
        "secure": true
    }
}

 

 

四、调用

在调用的地方引入 sendmail 函数,可先收集所有收件人邮箱放进一个数组,再使用 join(',') 把每个邮箱用 ',' 分隔,最后传入sendmail 即可

const sendmail = require("../../model/sendmail.js"); // 引入刚才写好的 sendmail.js

let mail = ['111111@qq.com','222222@qq.com','33333@qq.com'].join(',') // "111111@qq.com,222222@qq.com,33333@qq.com"
sendmail(mail,'<H1>使用 node 群发邮件~~~</H1><a href="https://www.cnblogs.com/elfpower/p/9323121.html">Node.js - 群发邮件</a>');

 

 

 

五、效果

QQ 邮箱页面:

 

node.js 输出

 

 

 

六、总结

非常简单,按照步骤安装->设置->调用,几分钟立即实现功能,后期再按实际需求稍微封装即可。需要注意一点,发送人邮箱记得开通 smtp!!!

 

posted @ 2020-07-27 01:11  elfpower  阅读(811)  评论(1编辑  收藏  举报