Adds nodemailer to the Nuxt3
This module can be used to send emails only from the server-side in Nuxt3.
- Auto import server composable
useNodeMailer()
- Add
sendEmail()
which inheritsfrom
argument - Expose
nodemailer
original instance - Using env variables for configuration
# 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
Add nuxt-nodemailer
to the modules
sections of your nuxt.config.js
.
the configuration uses the same options as nodemailer you can find them here
export default {
modules: [
'nuxt-nodemailer'
],
nodemailer: {
from: '"John Doe" <[email protected]>',
host: 'smtp.mailtrap.io',
port: 465,
secure: true,
auth: {
user: '[email protected]',
pass: '',
},
},
}
It's recommended to use environment variables for sensitive information like passwords.
each option in the nodemailer
configuration can be overwritten using environment variables. It has to be prefixed with NUXT_NODEMAILER_
and in uppercase.
For example, to overwrite the auth.pass
and from
options you can use the following environment variables:
NUXT_NODEMAILER_AUTH_PASS=yourpassword
NUXT_NODEMAILER_FROM="..."
Warning: You can overwrite only existing options in the
nodemailer
configuration in thenuxt.config.js
file.
In the server event handler, you can use the useNodeMailer
composable to send emails.
export default defineEventHandler(() => {
const { sendMail } = useNodeMailer()
return sendMail({ subject: 'Nuxt + nodemailer', text: 'Hello from nuxt-nodemailer!', to: '[email protected]' })
})
the benefit of using
sendMail
is that it automatically inherits thefrom
argument from the configuration and you don't have to specify it every time.
You can also use the transport
with your config options or create brand new transport using nodemailer
instance directly.
export default defineEventHandler(() => {
const { transport, nodemailer } = useNodeMailer()
// you can create a new transport
return nodemailer.createTransport(...)
// or use the existing one
return transport.sendMail(...)
})