Nuxt Nation 大会即将到来。加入我们,时间为 11 月 12-13 日。

nodemailer
nuxt-nodemailer

Nuxt 集成 Nodemailer

nuxt-nodemailer

npm versionnpm downloadsLicenseNuxtVolta

Buy me a coffee

将 Nodemailer 添加到 Nuxt3 中

此模块仅可在 Nuxt3 的服务器端用于发送电子邮件。

功能

  • 自动导入服务器组合式 useNodeMailer()
  • 添加 sendEmail(),它继承 from 参数
  • 公开 nodemailer 原生实例
  • 使用环境变量进行配置

安装

# Using ni
ni -D nuxt-nodemailer nodemailer

# Using pnpm
pnpm add -D nuxt-nodemailer nodemailer

# Using yarn
yarn add --dev nuxt-nodemailer nodemailer

# Using npm
npm install --save-dev nuxt-nodemailer nodemailer

配置

nuxt-nodemailer 添加到 nuxt.config.js 文件的 modules 部分。

配置使用与 Nodemailer 相同的选项,您可以在 此处 找到它们

export default {
  modules: [
    'nuxt-nodemailer'
  ],
  nodemailer: {
    from: '"John Doe" <[email protected]>',
    host: 'smtp.mailtrap.io',
    port: 465,
    secure: true,
    auth: {
      user: '[email protected]',
      pass: '',
    },
  },
}

环境变量

建议使用环境变量存储敏感信息,例如密码。

nodemailer 配置中的每个选项都可以使用环境变量覆盖。它必须以 NUXT_NODEMAILER_ 为前缀,并全部大写。

例如,要覆盖 auth.passfrom 选项,您可以使用以下环境变量

NUXT_NODEMAILER_AUTH_PASS=yourpassword
NUXT_NODEMAILER_FROM="..."

警告:您只能覆盖 nuxt.config.js 文件中 nodemailer 配置中已存在的选项。

使用

在服务器事件处理程序中,您可以使用 useNodeMailer 组合式发送电子邮件。

export default defineEventHandler(() => {
  const { sendMail } = useNodeMailer()

  return sendMail({ subject: 'Nuxt + nodemailer', text: 'Hello from nuxt-nodemailer!', to: '[email protected]' })
})

使用 sendMail 的好处在于它会自动继承配置中的 from 参数,您无需每次都指定它。

您还可以使用带有配置选项的 transport,或直接使用 nodemailer 实例创建全新的传输。

export default defineEventHandler(() => {
  const { transport, nodemailer } = useNodeMailer()

  // you can create a new transport
  return nodemailer.createTransport(...)

  // or use the existing one
  return transport.sendMail(...)
})