Nodejs Express邮件发送插件express-mailer的使用

Nodejs Express邮件发送插件express-mailer的使用
express-mailer 是一个用于在 Node.js 和 Express 应用中发送电子邮件的中间件。不过需要注意的是,这个库似乎并不是广泛使用的,你可能需要考虑其他更主流的库,如 nodemailer。但为了回答你的问题,下面是如何使用 express-mailer 的示例。

首先,你需要安装 express-mailer

npm install express express-mailer --save

然后,在你的 Express 应用中配置并使用它:

const express = require('express');
const app = express();
const mailer = require('express-mailer');

// 配置邮件发送服务
mailer.extend(app, {
  from: 'noreply@example.com', // 发送者的邮箱地址
  host: 'smtp.example.com', // SMTP服务器地址
  port: 587, // SMTP服务器端口
  auth: {
    user: 'your-email@example.com', // 用户名
    pass: 'your-password' // 密码
  }
});

app.use(mailer.middleware());

app.get('/send-email', function(req, res) {
  // 发送邮件
  app.mailer.send('email-template.ejs', { to: 'recipient@example.com', subject: 'Hello from Express-Mailer!' }, function(err) {
    if (err) {
      console.error('Error sending email:', err);
      return res.status(500).send('Failed to send email.');
    }
    res.send('Email sent successfully!');
  });
});

app.listen(3000, () => {
  console.log('App is running on http://localhost:3000');
});

在这个例子中,我们首先通过 mailer.extend 方法配置了邮件服务的信息,包括发件人、SMTP服务器信息等。然后,我们使用 mailer.middleware() 来添加一个中间件,这可以让你在应用的任何地方访问到 app.mailer 对象。

接着定义了一个路由 /send-email,当用户访问这个路由时,会触发邮件发送。这里使用了 app.mailer.send 方法来发送邮件,第一个参数是要使用的模板文件路径(在这里假设是一个 EJS 模板),第二个参数是一个包含收件人地址和主题的选项对象,第三个参数是一个回调函数,用于处理发送结果。

最后,启动应用监听端口。

请注意,实际使用时应该保护好你的邮件账户信息,避免硬编码密码在代码中。可以考虑使用环境变量来存储敏感信息。此外,对于生产环境,建议使用更安全的方式进行身份验证,比如 OAuth2 或者其他的认证机制。


3 回复

当然!Express-Mailer 是一个用于 Node.js 和 Express 的简单邮件发送库。首先,你需要安装它:

npm install express-mailer --save

然后,在你的应用中配置并使用它:

const express = require('express');
const app = express();
const expressMailer = require('express-mailer');

// 配置你的邮件服务(这里以Gmail为例)
app.mailer = expressMailer.engine({
    host: 'smtp.gmail.com',
    port: 465,
    secure: true, // 使用SSL
    auth: {
        user: 'your-email@gmail.com',
        pass: 'your-password'
    }
});

// 现在你可以通过 app.mailer.send 来发送邮件了
app.get('/send-email', function(req, res) {
    app.mailer.send('email-template-name', {
        to: 'recipient@example.com',
        subject: 'Hello from Express!',
        body: 'This is a test email sent via Express!'
    }, function(err) {
        if (err) {
            console.log('Error occurred while sending the email:', err);
            return res.status(500).send('Failed to send email.');
        }
        res.send('Email sent successfully!');
    });
});

app.listen(3000, () => console.log('Server running on port 3000'));

记得将 your-email@gmail.comyour-password 替换为你的实际邮箱和密码。这样,当你访问 /send-email 路由时,就会发送一封测试邮件。


express-mailer 是一个基于 Node.js 的 Express 框架的插件,用于简化邮件发送过程。它依赖于 nodemailer 库来处理实际的邮件发送工作。然而,请注意 express-mailer 这个库似乎并不是广泛使用的,并且可能存在维护问题。更推荐直接使用 nodemailer 来实现邮件发送功能。

不过,为了满足您的请求,我将向您展示如何使用 express-mailer,尽管它可能不是最现代的选择。首先,您需要安装必要的依赖项:

npm install express express-mailer nodemailer

接下来,我们可以设置一个简单的 Express 应用来发送邮件:

  1. 创建一个名为 app.js 的文件。
  2. 编写以下代码:
const express = require('express');
const app = express();
const expressMailer = require('express-mailer');

// 使用 express-mailer 中间件
expressMailer(app, {
    host: 'smtp.example.com',  // SMTP服务器地址
    port: 465,                 // SMTP端口
    auth: {
        user: 'your-email@example.com',  // 邮箱用户名
        pass: 'your-password'             // 邮箱密码或应用密码
    }
});

app.get('/send-email', function(req, res) {
    // 发送邮件
    app.mailer.send('email-template', { to: 'recipient@example.com', subject: 'Hello from Express Mailer' }, function(err) {
        if (err) {
            return res.status(500).send({ message: 'Failed to send email.' });
        }
        res.send('Email sent successfully.');
    });
});

app.listen(3000, () => console.log('App listening on port 3000!'));

在这个例子中,我们配置了 express-mailer 来使用 SMTP 服务(如 Gmail 或其他)。然后,我们在 /send-email 路径上创建了一个 GET 请求,用于发送电子邮件。

注意:在生产环境中,不要硬编码敏感信息如邮箱密码。考虑使用环境变量或配置管理工具来安全地存储这些信息。

再次强调,推荐使用 nodemailer 直接进行邮件发送,因为它更灵活、更受支持,并且可以轻松集成到任何 Express 应用中。

express-mailer 并不是一个广泛使用的或官方维护的库。通常,你可以通过 nodemailer 来实现邮件发送功能。首先安装 nodemailer

npm install nodemailer

然后你可以设置如下的Express应用中使用它:

const express = require('express');
const nodemailer = require('nodemailer');

const app = express();

app.post('/send-email', (req, res) => {
  const transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
      user: 'your-email@gmail.com',
      pass: 'your-password'
    }
  });

  const mailOptions = {
    from: 'your-email@gmail.com',
    to: 'recipient-email@example.com',
    subject: 'Hello',
    text: 'This is a test email.'
  };

  transporter.sendMail(mailOptions, (error, info) => {
    if (error) {
      return console.log(error);
    }
    console.log('Email sent: ' + info.response);
    res.send('Email sent');
  });
});

app.listen(3000, () => console.log('Server started on port 3000'));

以上代码创建了一个简单的Express服务器,并设置了一个POST路由来发送邮件。

回到顶部