Nodejs Koa邮件发送插件koa-nodemailer的使用

Nodejs Koa邮件发送插件koa-nodemailer的使用
koa-nodemailer 是一个用于 Koa 框架的邮件发送插件,它基于 nodemailer。下面是一个简单的示例,展示如何在 Koa 应用中使用 koa-nodemailer 发送邮件。

首先,你需要安装必要的依赖:

npm install koa nodemailer koa-nodemailer

接下来,你可以创建一个简单的 Koa 应用来发送邮件:

const Koa = require('koa');
const koaNodemailer = require('koa-nodemailer');
const { createTransport } = require('nodemailer');

const app = new Koa();

// 使用 koa-nodemailer 中间件
app.use(koaNodemailer({
  // 配置 Nodemailer
  transport: {
    host: 'smtp.example.com', // SMTP服务器地址
    port: 587,                // SMTP服务器端口
    secure: false,            // 如果是465端口,设置为true
    auth: {
      user: 'your-email@example.com', // 用户名
      pass: 'your-password'           // 密码或应用密码
    }
  },
}));

app.use(async ctx => {
  if (ctx.path === '/send-mail') {
    const mailOptions = {
      from: 'Your Name <your-email@example.com>', // 发件人
      to: 'recipient@example.com',                 // 收件人
      subject: 'Hello ✔',                          // 邮件主题
      text: 'Hello world ?',                       // 文本内容
      html: '<b>Hello world ?</b>'                 // HTML 内容
    };

    try {
      const result = await ctx.nodemailer.sendMail(mailOptions);
      ctx.body = { message: 'Email sent successfully', result };
    } catch (error) {
      ctx.status = 500;
      ctx.body = { error: 'Failed to send email', errorDetails: error.message };
    }
  } else {
    ctx.body = 'Welcome to the Koa app!';
  }
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

在这个例子中,我们创建了一个 Koa 应用,并配置了 koa-nodemailer 中间件。当访问 /send-mail 路径时,会发送一封测试邮件。

请注意,为了安全起见,通常不建议直接在代码中硬编码电子邮件账户的用户名和密码。可以考虑使用环境变量来存储这些敏感信息,或者使用更安全的身份验证方法(如 OAuth2)。

此外,确保你的SMTP服务器支持你所使用的端口和身份验证方式。不同的邮件服务提供商可能有不同的要求。


3 回复

当然!koa-nodemailer 是一个基于 Koa 框架的邮件发送中间件,它封装了 nodemailer,让你可以轻松地在你的 Koa 应用中发送邮件。首先,你需要安装必要的依赖:

npm install koa koa-router nodemailer koa-nodemailer

接下来,在你的 Koa 应用中配置并使用它:

const Koa = require('koa');
const Router = require('koa-router');
const nodemailer = require('nodemailer');
const koaNodemailer = require('koa-nodemailer');

const app = new Koa();
const router = new Router();

// 创建一个 Nodemailer 传输器
const transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
        user: 'your-email@gmail.com',
        pass: 'your-password'
    }
});

app.use(koaNodemailer(transporter));

router.post('/send-email', async (ctx) => {
    const { to, subject, text } = ctx.request.body;
    await ctx.email.send({
        from: 'your-email@gmail.com',
        to,
        subject,
        text
    });
    ctx.body = { message: 'Email sent!' };
});

app.use(router.routes()).use(router.allowedMethods());

app.listen(3000);

这样,你就有了一个简单的 Koa 路由,用来发送邮件。只需向 /send-email 发送 POST 请求,并包含 to, subject, 和 text 字段即可。

记得替换示例中的邮箱和密码为你自己的信息哦!


koa-nodemailer 是一个基于 Koa 框架的邮件发送插件,它封装了 nodemailer 库,使得在 Koa 应用中发送邮件变得非常方便。下面是如何使用 koa-nodemailer 的步骤和示例代码。

安装

首先,你需要安装 koa-nodemailerkoa

npm install koa koa-nodemailer nodemailer

配置

接下来,我们需要配置 koa-nodemailer。这里是一个简单的例子,展示了如何设置和使用 koa-nodemailer 发送邮件:

const Koa = require('koa');
const nodemailer = require('koa-nodemailer');

const app = new Koa();

// 使用 koa-nodemailer 中间件
app.use(nodemailer({
    // nodemailer 配置
    host: 'smtp.example.com',
    port: 587,
    secure: false, // true for 465, false for other ports
    auth: {
        user: 'your-email@example.com', // 用户名
        pass: 'your-password' // 密码或应用密码
    }
}));

// 创建一个路由来测试发送邮件
app.use(async (ctx) => {
    if (ctx.url === '/send-mail') {
        const transporter = ctx.nodemailer; // 从上下文中获取 nodemailer 实例
        const mailOptions = {
            from: '"Fred Foo" <foo@example.com>', // 发件人
            to: 'bar@example.com, baz@example.com', // 收件人列表
            subject: 'Hello ✔', // 标题
            text: 'Hello world?', // 文本内容
            html: '<b>Hello world?</b>' // HTML 内容
        };

        try {
            const info = await transporter.sendMail(mailOptions);
            console.log('Message sent: %s', info.messageId);
            ctx.body = { status: 'success', message: '邮件已成功发送!' };
        } catch (error) {
            console.error(error);
            ctx.status = 500;
            ctx.body = { status: 'error', message: '邮件发送失败,请重试。' };
        }
    }
});

// 启动服务器
app.listen(3000, () => {
    console.log('Server is running on http://localhost:3000');
});

这段代码创建了一个 Koa 应用,并配置了 koa-nodemailer 以发送邮件。当访问 /send-mail 路由时,会尝试发送一封测试邮件。

注意事项

  • 确保你的 SMTP 服务(如 Gmail, Outlook 等)支持并允许通过应用程序进行登录。
  • 对于安全性考虑,不要将邮箱密码直接硬编码到代码中,可以使用环境变量或其他安全方法来管理凭证。
  • 如果你在使用 Gmail,可能需要启用“不够安全的应用的访问权限”。

希望这个示例对你有所帮助!

koa-nodemailer 是一个用于Koa框架的邮件发送插件,基于 Nodemailer。首先,你需要安装 koa-nodemailernodemailer

npm install koa-nodemailer nodemailer

然后,你可以这样配置和使用它:

const Koa = require('koa');
const koaNodemailer = require('koa-nodemailer');

const app = new Koa();
app.use(koaNodemailer());

app.context.mailer.send({
    to: 'example@example.com',
    subject: 'Hello',
    text: 'Hello world'
});

确保你已经在环境或配置中设置了正确的SMTP服务器信息。

回到顶部