📜  如何使用 Node.js 发送电子邮件?(1)

📅  最后修改于: 2023-12-03 15:23:56.594000             🧑  作者: Mango

使用 Node.js 发送电子邮件

在 Web 开发过程中,发送电子邮件是一项常见的任务。Node.js 作为一种服务器端 JavaScript 运行环境,可以通过多个模块进行电子邮件的发送和接收。

本文将介绍如何使用 Node.js 发送电子邮件。我们将使用 nodemailer 这个邮件发送库。

安装 nodemailer

在使用 nodemailer 之前,需要先安装它。通过 Node.js 的包管理器 npm 可以轻松地完成这个任务。

在命令行输入以下命令:

npm install nodemailer
发送邮件

以下是一个示例代码,通过 nodemailer 发送一封电子邮件:

const nodemailer = require('nodemailer');

// 创建邮件传输对象
let transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
        user: 'example@gmail.com',
        pass: '******'
    }
});

// 邮件内容
let mailOptions = {
    from: 'example@gmail.com',
    to: 'recipient@example.com',
    subject: 'Node.js 发送邮件',
    text: '这是一封通过 Node.js 发送的电子邮件。'
};

// 发送邮件
transporter.sendMail(mailOptions, function(error, info){
    if (error) {
        console.log(error);
    } else {
        console.log('邮件已发送:' + info.response);
    }
});
创建邮件传输对象

在使用 nodemailer 发送邮件之前,需要创建一个 transporter 对象。在创建 transporter 对象时,需要指定使用的邮件服务以及认证信息。在示例中,我们使用了 Gmail 作为邮件服务,并提供了用户和密码信息。

设置邮件内容

在邮件内容中,指定了邮件的发送方、接收方、主题以及正文。

发送邮件

调用 transporter.sendMail() 方法,发送邮件。在发送邮件时,如果有错误发生,将会在回调函数中返回错误信息。如果邮件发送成功,将会返回一个包含邮件发送状态信息的对象。

发送带附件的邮件

除了发送纯文本邮件外,nodemailer 也支持发送带附件的邮件。以下是一个示例代码,通过 nodemailer 发送带附件的电子邮件:

const nodemailer = require('nodemailer');

// 创建邮件传输对象
let transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
        user: 'example@gmail.com',
        pass: '******'
    }
});

// 邮件内容
let mailOptions = {
    from: 'example@gmail.com',
    to: 'recipient@example.com',
    subject: 'Node.js 发送邮件',
    text: '这是一封通过 Node.js 发送的电子邮件。',
    attachments: [
        {
            filename: 'attachment.txt',
            content: '这是一个纯文本附件。'
        },
        {
            filename: 'image.png',
            path: '/path/to/image.png'
        }
    ]
};

// 发送邮件
transporter.sendMail(mailOptions, function(error, info){
    if (error) {
        console.log(error);
    } else {
        console.log('邮件已发送:' + info.response);
    }
});

在邮件内容中,attachments 字段用于指定附件信息。在示例代码中,我们添加了一个纯文本附件以及一个图像附件。

发送 HTML 邮件

除了发送纯文本邮件外,nodemailer 也支持发送 HTML 格式的邮件。以下是一个示例代码,通过 nodemailer 发送 HTML 邮件:

const nodemailer = require('nodemailer');

// 创建邮件传输对象
let transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
        user: 'example@gmail.com',
        pass: '******'
    }
});

// 邮件内容
let mailOptions = {
    from: 'example@gmail.com',
    to: 'recipient@example.com',
    subject: 'Node.js 发送邮件',
    html: '<h1>这是一封通过 Node.js 发送的 HTML 邮件。</h1><p>这是一个段落。</p>'
};

// 发送邮件
transporter.sendMail(mailOptions, function(error, info){
    if (error) {
        console.log(error);
    } else {
        console.log('邮件已发送:' + info.response);
    }
});

在邮件内容中,我们使用了 html 字段来指定 HTML 格式的邮件内容。

结论

通过 nodemailer,我们可以方便地在 Node.js 应用程序中发送电子邮件。在示例代码中,我们演示了如何发送纯文本邮件、带附件的邮件以及 HTML 邮件。