Email setup
Your project uses SMTP to send transactional emails: email verification, password reset, invitation links, email change confirmation, and in-app notifications.
What happens without email configured?
If EMAIL_SMTP_HOST or EMAIL_FROM are not set, emails are silently skipped — the app logs the email payload to the console instead of sending it. Everything else continues to work normally.
This means you can develop without an email provider. When a verification or reset email would be sent, check your terminal output to find the link.
Tip: You can also set
AUTH_BYPASS_EMAIL_VERIFICATION=truein your.envto skip email verification entirely during development.
Environment variables
Add these to packages/backend/.env:
EMAIL_FROM=[email protected]
EMAIL_SMTP_HOST=smtp.example.com
EMAIL_SMTP_PORT=587
EMAIL_SMTP_USER=your-username
EMAIL_SMTP_PASSWORD=your-passwordProvider examples
Below are SMTP settings for popular email providers. Replace credentials with your own.
Resend
EMAIL_FROM=[email protected]
EMAIL_SMTP_HOST=smtp.resend.com
EMAIL_SMTP_PORT=465
EMAIL_SMTP_USER=resend
EMAIL_SMTP_PASSWORD=re_your_api_keyCreate an API key at resend.com/api-keys. You must verify your sending domain first.
SendGrid
EMAIL_FROM=[email protected]
EMAIL_SMTP_HOST=smtp.sendgrid.net
EMAIL_SMTP_PORT=587
EMAIL_SMTP_USER=apikey
EMAIL_SMTP_PASSWORD=SG.your_api_keyThe SMTP user is literally apikey. Create an API key at Settings → API Keys in the SendGrid dashboard.
Amazon SES
EMAIL_FROM=[email protected]
EMAIL_SMTP_HOST=email-smtp.us-east-1.amazonaws.com
EMAIL_SMTP_PORT=587
EMAIL_SMTP_USER=your-smtp-username
EMAIL_SMTP_PASSWORD=your-smtp-passwordReplace the region in the host with your SES region. Generate SMTP credentials in the AWS SES console → SMTP settings.
Mailgun
EMAIL_FROM=[email protected]
EMAIL_SMTP_HOST=smtp.mailgun.org
EMAIL_SMTP_PORT=587
EMAIL_SMTP_USER=[email protected]
EMAIL_SMTP_PASSWORD=your-mailgun-passwordFind SMTP credentials under Sending → Domain settings → SMTP credentials in the Mailgun dashboard.
Postmark
EMAIL_FROM=[email protected]
EMAIL_SMTP_HOST=smtp.postmarkapp.com
EMAIL_SMTP_PORT=587
EMAIL_SMTP_USER=your-server-api-token
EMAIL_SMTP_PASSWORD=your-server-api-tokenBoth user and password are the same Server API Token. Find it under Server → API Tokens in Postmark.
Gmail (development only)
EMAIL_FROM=[email protected]
EMAIL_SMTP_HOST=smtp.gmail.com
EMAIL_SMTP_PORT=587
EMAIL_SMTP_USER=[email protected]
EMAIL_SMTP_PASSWORD=your-app-passwordUse an App Password, not your regular password. Gmail has a daily sending limit of ~500 emails — use a dedicated provider for production.