透過超過 100 個技巧的集合學習 Nuxt!

nodemailer
nuxt-nodemailer

用於 nodemailer 的 Nuxt 整合

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" <john@doe.com>',
    host: 'smtp.mailtrap.io',
    port: 465,
    secure: true,
    auth: {
      user: 'john@doe.com',
      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: 'john@doe.com' })
})

使用 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(...)
})