If you are not sure if the website you would like to visit is secure, you can verify it here. Enter the website address of the page and see parts of its content and the thumbnail images on this site. None (if any) dangerous scripts on the referenced page will be executed. Additionally, if the selected site contains subpages, you can verify it (review) in batches containing 5 pages.
favicon.ico: authjs.dev/getting-started/providers/nodemailer - GitHub.

site address: authjs.dev/getting-started/providers/nodemailer redirected to: authjs.dev/getting-started/providers/nodemailer

site title: GitHub

Our opinion (on Sunday 19 July 2026 6:25:59 UTC):

GREEN status (no comments) - no comments
After content analysis of this website we propose the following hashtags:



Meta tags:

Headings (most frequently used words):

email, nodemailer, provider, overview, configuration, customization, how, it, works, body, verification, tokens, normalizing, addresses, about, auth, js, download, acknowledgements,

Text of the page (most frequently used words):
the (47), auth (44), #nodemailer (44), email (31), from (31), env (24), import (21), providers (20), you (17), const (17), url (13), next (12), provider (12), host (12), sign (11), with (11), can (11), not (11), color (11), address (10), nextauth (10), export (10), for (10), server (10), process (10), signin (9), that (9), user (8), string (8), signout (8), text (8), email_from (8), account (8), this (7), verification (7), style (7), font (7), theme (7), use (7), one (6), identifier (6), and (6), example (6), are (6), token (6), html (6), border (6), they (6), sveltekit (6), will (5), domain (5), handlers (5), want (5), function (5), body (5), table (5), email_server (5), database (5), qwik (5), smtp (5), github (4), error (4), return (4), default (4), when (4), method (4), padding (4), 0px (4), 10px (4), align (4), center (4), background (4), brandcolor (4), params (4), sent (4), sendverificationrequest (4), here (4), express (4), adapter (4), sveltekitauth (4), src (4), com (4), configuration (4), used (4), oauth (4), azure (4), better (3), npm (3), throw (3), new (3), split (3), page (3), also (3), part (3), more (3), users (3), your (3), tokens (3), size (3), family (3), helvetica (3), arial (3), sans (3), serif (3), radius (3), buttontext (3), failed (3), result (3), transport (3), signed (3), link (3), documented (3), yet (3), help (3), contributing (3), email_server_password (3), email_server_user (3), email_server_port (3), email_server_host (3), handle (3), connection (3), works (3), add (3), getting (3), started (3), discord (2), security (2), introduction (2), notion (2), nextcloud (2), mail (2), passed (2), only (2), length (2), which (2), local (2), but (2), contain (2), separated (2), get (2), first (2), two (2), normalizeidentifier (2), looking (2), via (2), following (2), shows (2), normalizing (2), addresses (2), generateverificationtoken (2), async (2), react (2), clients (2), line (2), 22px (2), buttonborder (2), 5px (2), 20px (2), buttonbackground (2), cellspacing (2), cellpadding (2), strong (2), escapedhost (2), width (2), mainbackground (2), fff (2), sendmail (2), createtransport (2), custom (2), customization (2), created (2), time (2), their (2), associated (2), now (2), api (2), adapters (2), pass (2), port (2), dynamic (2), prviate (2), noreply (2), 587 (2), password (2), username (2), meta (2), qwikauth (2), object (2), configure (2), need (2), however (2), using (2), other (2), sendgrid (2), resend (2), services (2), bun (2), yarn (2), pnpm (2), install (2), provides (2), signing (2), how (2), magic (2), links (2), overview (2), identity (2), credentials (2), session (2), inc, 2026, contributors, acknowledgements, download, community, about, always, make, sure, returns, single, even, multiple, ones, were, allowed, emailsignin, redirect, remove, before, trim, tolowercase, let, input, elements, normalize, treats, case, insensitive, technically, compliant, practice, causes, problems, than, solves, databases, removes, any, secondary, may, have, been, comma, list, apply, own, normalization, behavior, rfc, 2821, spec, randomuuid, crypto, generating, random, define, options, override, generate, great, emails, compatible, many, check, out, mjml, fallback, don, render, feature, phones, did, request, safely, ignore, 16px, height, display, inline, block, weight, bold, decoration, none, 1px, solid, 18px, target, _blank, href, bgcolor, max, 600px, margin, auto, 100, 444, f9f9f9, 346df1, replace, could, join, boolean, filter, pending, concat, rejected, subject, await, note, required, whatever, source, our, built, notice, rendering, making, network, call, actually, sending, fully, customize, passing, option, entry, until, verify, already, start, forget, setup, storing, hooks, usesignout, usesignin, usesession, onrequest, routes, plugin, either, there, ways, ideally, http, based, service, recommend, designed, those, like, transports, known, work, does, include, dependency, yourself, both, json, web, managed, sessions, possible, enable, without, must, someone, into, follow, existing, initial, provided, valid, hours, within, clicking, conjunction, instead, adding, support, addition, way, lose, access, locked, deleted, uses, send, urls, edit, question, give, feedback, migrating, integrations, xata, upstash, redis, unstorage, typeorm, surrealdb, supabase, sequelize, prisma, pouchdb, postgresql, neon, neo4j, mongodb, mikroorm, kysely, hasura, firebase, firestore, faunadb, edgedb, dynamodb, drizzle, dgraph, cloudflare, tables, zoom, zoho, zitadel, yandex, workos, wordpress, wikimedia, webex, vipps, mobilepay, united, effects, twitter, twitch, trakt, todoist, tiktok, threads, strava, spotify, slack, simplelogin, salesforce, sailpoint, reddit, postmark, pipedrive, pinterest, patreon, passkey, passage, osu, osso, onelogin, okta, netsuite, netlify, naver, microsoft, entra, medium, mattermost, mastodon, mailru, mailgun, mailchimp, loops, logto, linkedin, keycloak, kakao, instagram, server4, hubspot, google, gitlab, fusionauth, frontegg, freshbooks, foursquare, forwardemail, figma, faceit, facebook, eveonline, duende, server6, dropbox, dribbble, descope, coinbase, cognito, click, bungie, boxyhq, saml, box, bitbucket, beyondidentity, battlenet, bankid, norge, devops, b2c, authentik, auth0, asgardeo, apple, school, connections, typescript, deployment, pages, protecting, resources, management, webauthn, authentication, installation, migrate, light, ask, concepts, reference, guides, project, skip, content,


Text of the page (random words):
auth js nodemailer skip to content the auth js project is now part of better auth auth js getting started guides api reference concepts security ai ask ai github 22 2k light introduction migrate to better auth getting started installation authentication oauth magic links credentials webauthn database session management signin and signout get session protecting resources custom pages deployment typescript connections providers 42 school apple asgardeo auth0 authentik azure ad azure ad b2c azure devops bankid norge battlenet beyondidentity bitbucket box boxyhq saml bungie click up cognito coinbase credentials descope discord dribbble dropbox duende identity server6 eveonline facebook faceit figma forwardemail foursquare freshbooks frontegg fusionauth github gitlab google hubspot identity server4 instagram kakao keycloak line linkedin logto loops mailchimp mailgun mailru mastodon mattermost medium microsoft entra id naver netlify netsuite nextcloud nodemailer notion okta onelogin osso osu passage passkey patreon pinterest pipedrive postmark reddit resend sailpoint salesforce sendgrid simplelogin slack spotify strava threads tiktok todoist trakt twitch twitter united effects vipps mobilepay vk webex wikimedia wordpress workos yandex zitadel zoho zoom adapters azure tables cloudflare d1 dgraph drizzle dynamodb edgedb faunadb firebase firestore hasura kysely mikroorm mongodb neo4j neon postgresql pouchdb prisma sequelize supabase surrealdb typeorm unstorage upstash redis xata integrations migrating to v5 on this page overview how it works configuration customization email body verification tokens normalizing email addresses question give us feedback edit this page on github getting started providers nodemailer nodemailer provider overview the nodemailer provider uses email to send magic links that contain urls with verification tokens can be used to sign in adding support for signing in via email in addition to one or more oauth services provides a way for users to sign in if they lose access to their oauth account e g if it is locked or deleted the nodemailer provider can be used in conjunction with or instead of one or more oauth providers how it works on initial sign in a verification token is sent to the email address provided by default this token is valid for 24 hours if the verification token is used within that time i e by clicking on the link in the email an account is created for the user and they are signed in if someone provides the email address of an existing account when signing in an email is sent and they are signed into the account associated with that email address when they follow the link in the email ️ the nodemailer provider can be used with both json web token and database managed sessions however you must configure a database to use it it is not possible to enable email sign in without using a database configuration auth js does not include nodemailer as a dependency so you ll need to install it yourself if you want to use the nodemailer provider npm pnpm yarn bun npm install nodemailer pnpm add nodemailer yarn add nodemailer bun add nodemailer you will need an smtp account ideally for one of the services known to work with nodemailer nodemailer also works with other transports however if you want to use an http based email service we recommend using one of the other auth js providers designed for those like resend or sendgrid there are two ways to configure the smtp server connection you can either use a connection string or a nodemailer configuration object connection string configuration object env email_server smtp username password smtp example com 587 email_from noreply example com next js qwik sveltekit express auth ts import nextauth from next auth import nodemailer from next auth providers nodemailer export const handlers auth signin signout nextauth adapter providers nodemailer server process env email_server from process env email_from src routes plugin auth ts import qwikauth from auth qwik import nodemailer from auth qwik providers nodemailer export const onrequest usesession usesignin usesignout qwikauth providers nodemailer server import meta env email_server from import meta env email_from src auth ts import sveltekitauth from auth sveltekit import nodemailer from auth sveltekit providers nodemailer import env from env dynamic prviate export const handle signin signout sveltekitauth adapter providers nodemailer server env email_server from env email_from src hooks server ts export handle from auth express not documented yet help us by contributing here env email_server_user username email_server_password password email_server_host smtp example com email_server_port 587 email_from noreply example com next js qwik sveltekit express auth ts import nextauth from next auth import nodemailer from next auth providers nodemailer export const handlers auth signin signout nextauth adapter providers nodemailer server host process env email_server_host port process env email_server_port auth user process env email_server_user pass process env email_server_password from process env email_from qwik not documented yet help us by contributing here src auth ts import sveltekitauth from auth sveltekit import nodemailer from auth sveltekit providers nodemailer import env from env dynamic prviate export const handle signin signout sveltekitauth adapter providers nodemailer server host env email_server_host port env email_server_port auth user env email_server_user pass env email_server_password from env email_from express not documented yet help us by contributing here do not forget to setup one of the database adapters for storing the email verification token you can now start the sign process with an email address at api auth signin a user account i e an entry in the users table will not be created for the user until the first time they verify their email address if an email address is already associated with an account the user will be signed in to that account when they use the link in the email customization email body you can fully customize the sign in email that is sent by passing a custom function as the sendverificationrequest option to nodemailer auth ts import nextauth from next auth import nodemailer from next auth providers nodemailer export const handlers auth signin signout nextauth providers nodemailer server process env email_server from process env email_from sendverificationrequest identifier email url provider server from your function as an example the following shows the source for our built in sendverificationrequest method notice that we re rendering the html html and making the network call transport sendmail to the email provider to actually do the sending here in this method import createtransport from nodemailer export async function sendverificationrequest params const identifier url provider theme params const host new url url note you are not required to use nodemailer use whatever you want const transport createtransport provider server const result await transport sendmail to identifier from provider from subject sign in to host text text url host html html url host theme const failed result rejected concat result pending filter boolean if failed length throw new error email s failed join could not be sent function html params url string host string theme theme const url host theme params const escapedhost host replace g const brandcolor theme brandcolor 346df1 const color background f9f9f9 text 444 mainbackground fff buttonbackground brandcolor buttonborder brandcolor buttontext theme buttontext fff return body style background color background table width 100 border 0 cellspacing 20 cellpadding 0 style background color mainbackground max width 600px margin auto border radius 10px tr td align center style padding 10px 0px font size 22px font family helvetica arial sans serif color color text sign in to strong escapedhost strong td tr tr td align center style padding 20px 0 table border 0 cellspacing 0 cellpadding 0 tr td align center style border radius 5px bgcolor color buttonbackground a href url target _blank style font size 18px font family helvetica arial sans serif color color buttontext text decoration none border radius 5px padding 10px 20px border 1px solid color buttonborder display inline block font weight bold sign in a td tr table td tr tr td align center style padding 0px 0px 10px 0px font size 16px line height 22px font family helvetica arial sans serif color color text if you did not request this email you can safely ignore it td tr table body email text body fallback for email clients that don t render html e g feature phones function text url host url string host string return sign in to host n url n n if you want to generate great looking emails with react that are compatible with many email clients check out mjml or react email verification tokens by default we are generating a random verification token you can define a generateverificationtoken method in your provider options if you want to override it auth ts import nextauth from next auth import nodemailer from next auth providers nodemailer export const handlers auth signin signout nextauth providers nodemailer async generateverificationtoken return crypto randomuuid normalizing email addresses by default auth js will normalize the email address it treats the address as case insensitive which is technically not compliant to the rfc 2821 spec but in practice this causes more problems than it solves i e when looking up users by e mail from databases and also removes any secondary email address that may have been passed in as a comma separated list you can apply your own normalization via the normalizeidentifier method on the nodemailer provider the following example shows the default behavior auth ts import nextauth from next auth import nodemailer from next auth providers nodemailer export const handlers auth signin signout nextauth providers nodemailer normalizeidentifier identifier string string get the first two elements only separated by from user input let local domain identifier tolowercase trim split the part before can contain a but we remove it on the domain part domain domain split 0 return local domain you can also throw an error which will redirect the user to the sign in page with error emailsignin in the url if identifier split length 2 throw new error only one email allowed ️ always make sure this returns a single e mail address even if multiple ones were passed in nextcloud notion about auth js introduction security discord community download github npm acknowledgements contributors auth js better auth inc 2026
Thumbnail images (randomly selected): * Images may be subject to copyright.GREEN status (no comments)
  • Auth.js Logo
  • Discord Logo

Verified site has: 140 subpage(s). Do you want to verify them? Verify pages:

1-5 6-10 11-15 16-20 21-25 26-30 31-35 36-40 41-45 46-50
51-55 56-60 61-65 66-70 71-75 76-80 81-85 86-90 91-95 96-100
101-105 106-110 111-115 116-120 121-125 126-130 131-135 136-140


The site also has references to the 1 subdomain(s)

  discord.authjs.dev  Verify


Top 50 hastags from of all verified websites.

Supplementary Information (add-on for SEO geeks)*- See more on header.verify-www.com

Header

HTTP/1.0 308 Permanent Redirect
Content-Type text/plain
Location htt????/authjs.dev/getting-started/providers/nodemailer
Refresh 0;url=htt????/authjs.dev/getting-started/providers/nodemailer
server Vercel
HTTP/2 200
access-control-allow-origin *
age 46157
cache-control public, max-age=0, must-revalidate
content-disposition inline; filename= nodemailer
content-encoding gzip
content-type text/html; charset=utf-8
date Sun, 19 Jul 2026 06:25:58 GMT
etag W/ 0b28bd336db90662dcede112f1e6bf43
last-modified Sat, 18 Jul 2026 17:36:40 GMT
server Vercel
strict-transport-security max-age=31536000; includeSubDomains; preload
x-content-type-options nosniff
x-frame-options DENY
x-matched-path /getting-started/providers/nodemailer
x-vercel-cache HIT
x-vercel-id cdg1::mtp99-1784442358594-9d9617d0b12b
x-xss-protection 1; mode=block

Meta Tags

title="GitHub"
charset="utf-8" data-next-head=""
name="theme-color" content="#111" media="(prefers-color-scheme: dark)" data-next-head=""
name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" data-next-head=""
property="og:url" content="htt????/authjs.dev/getting-started/providers/nodemailer" data-next-head=""
property="og:title" content="Auth.js | Nodemailer" data-next-head=""
property="og:description" content="Authentication for the Web" data-next-head=""
property="og:image" content="htt????/authjs.dev/api/og?title=Auth.js%20%7C%20Nodemailer" data-next-head=""

Load Info

page size18145
load time (s)0.082925
redirect count1
speed download221280
server IP 216.150.1.65
* all occurrences of the string "http://" have been changed to "htt???/"