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/forwardemail - GitHub.

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

site title: GitHub

Our opinion (on Monday 13 July 2026 21:31:03 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, forward, 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 (48), email (36), auth (34), forwardemail (24), from (23), you (17), providers (15), import (14), url (13), const (13), provider (13), can (12), #address (11), sign (11), your (11), color (11), this (10), next (10), host (10), with (9), and (9), that (9), account (9), nextauth (8), verification (8), text (8), for (8), forward (8), domain (7), signin (7), export (7), default (7), style (7), font (7), theme (7), will (6), user (6), string (6), signout (6), not (6), token (6), body (6), html (6), border (6), env (6), they (6), auth_forwardemail_key (6), error (5), identifier (5), method (5), function (5), table (5), api (5), database (5), environment (5), variable (5), github (4), one (4), return (4), handlers (4), than (4), when (4), are (4), padding (4), 0px (4), 10px (4), align (4), center (4), background (4), brandcolor (4), params (4), json (4), apikey (4), sendverificationrequest (4), link (4), configuration (4), used (4), oauth (4), azure (4), better (3), security (3), throw (3), new (3), split (3), page (3), part (3), first (3), more (3), users (3), have (3), tokens (3), size (3), family (3), helvetica (3), arial (3), sans (3), serif (3), radius (3), buttontext (3), res (3), process (3), sent (3), signed (3), magic (3), use (3), reply (3), company (3), com (3), named (3), differently (3), sveltekit (3), qwik (3), getting (3), started (3), discord (2), introduction (2), foursquare (2), figma (2), mail (2), passed (2), only (2), also (2), which (2), local (2), but (2), contain (2), separated (2), get (2), normalizeidentifier (2), looking (2), via (2), following (2), example (2), shows (2), normalizing (2), addresses (2), generateverificationtoken (2), async (2), want (2), generate (2), emails (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), await (2), stringify (2), content (2), fetch (2), here (2), server (2), custom (2), option (2), customization (2), created (2), time (2), their (2), associated (2), click (2), now (2), adapters (2), express (2), adapter (2), sveltekitauth (2), src (2), qwikauth (2), however (2), into (2), key (2), provides (2), signing (2), how (2), works (2), links (2), overview (2), identity (2), credentials (2), session (2), inc, 2026, contributors, acknowledgements, npm, download, community, about, always, make, sure, returns, single, even, multiple, ones, were, allowed, length, emailsignin, redirect, remove, before, trim, tolowercase, let, input, two, elements, normalize, treats, case, insensitive, technically, compliant, practice, causes, problems, solves, databases, removes, any, secondary, may, been, comma, list, apply, own, normalization, behavior, rfc, 2821, spec, randomuuid, crypto, generating, random, define, options, override, great, 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, subject, application, type, btoa, basic, authorization, headers, post, https, net, lib, authsendrequest, source, our, built, notice, rendering, making, network, call, actually, sending, email_from, email_server, fully, customize, passing, entry, until, verify, already, start, forget, setup, storing, documented, yet, help, contributing, handle, dynamic, prviate, meta, usesignout, usesignin, usesession, onrequest, routes, plugin, name, pick, automatically, object, simpler, like, rename, something, else, manually, pass, abc, save, need, required, add, both, basicauth, managed, sessions, possible, enable, without, using, must, configure, someone, follow, existing, initial, provided, valid, hours, within, clicking, conjunction, instead, adding, support, addition, services, 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, sendgrid, salesforce, sailpoint, resend, reddit, postmark, pipedrive, pinterest, patreon, passkey, passage, osu, osso, onelogin, okta, notion, nodemailer, nextcloud, netsuite, netlify, naver, microsoft, entra, medium, mattermost, mastodon, mailru, mailgun, mailchimp, loops, logto, linkedin, keycloak, kakao, instagram, server4, hubspot, google, gitlab, fusionauth, frontegg, freshbooks, faceit, facebook, eveonline, duende, server6, dropbox, dribbble, descope, coinbase, cognito, 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,


Text of the page (random words):
auth js forwardemail 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 forwardemail forward email provider overview the forward email 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 forward email 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 forward email provider can be used with both basicauth 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 first you ll need to add your domain to your forward email account this is required by forward email and this domain of the address you use in the from provider option next you will have to generate an api key in the my account security you can save this api key as the auth_forwardemail_key environment variable auth_forwardemail_key abc if you name your environment variable auth_forwardemail_key the provider will pick it up automatically and your auth js configuration object can be simpler if you d like to rename it to something else however you ll have to manually pass it into the provider in your auth js configuration next js qwik sveltekit express auth ts import nextauth from next auth import forwardemail from next auth providers forwardemail export const handlers auth signin signout nextauth adapter providers forwardemail if your environment variable is named differently than default apikey auth_forwardemail_key from no reply company com src routes plugin auth ts import qwikauth from auth qwik import forwardemail from auth qwik providers forwardemail export const onrequest usesession usesignin usesignout qwikauth providers forwardemail if your environment variable is named differently than default apikey import meta env auth_forwardemail_key from no reply company com src auth ts import sveltekitauth from auth sveltekit import forwardemail from auth sveltekit providers forwardemail import env from env dynamic prviate export const handle signin signout sveltekitauth adapter providers forwardemail if your environment variable is named differently than default apikey env auth_forwardemail_key from no reply company com 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 in 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 click the link in magic link email and use up the verification token customization email body you can fully customize the sign in email that is sent by passing a custom function as the sendverificationrequest option to forwardemail auth ts import nextauth from next auth import forwardemail from next auth providers forwardemail export const handlers auth signin signout nextauth providers forwardemail 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 fetch to forward email to actually do the sending here in this method lib authsendrequest ts export async function sendverificationrequest params const identifier to provider url theme params const host new url url const res await fetch https api forwardemail net v1 emails method post headers authorization basic btoa provider apikey content type application json body json stringify from provider from to subject sign in to host html html url host theme text text url host if res ok throw new error forward email error json stringify await res json 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 forwardemail from next auth providers forwardemail export const handlers auth signin signout nextauth providers forwardemail 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 forwardemail provider the following example shows the default behavior auth ts import nextauth from next auth import forwardemail from next auth providers forwardemail export const handlers auth signin signout nextauth providers forwardemail 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 figma foursquare 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: 139 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-139


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/forwardemail
Refresh 0;url=htt????/authjs.dev/getting-started/providers/forwardemail
server Vercel
HTTP/2 200
access-control-allow-origin *
age 39233
cache-control public, max-age=0, must-revalidate
content-disposition inline; filename= forwardemail
content-encoding gzip
content-type text/html; charset=utf-8
date Mon, 13 Jul 2026 21:31:03 GMT
etag W/ 544b88050339316a8083c2047204f86b
last-modified Mon, 13 Jul 2026 10:37:09 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/forwardemail
x-vercel-cache HIT
x-vercel-id cdg1::gpxs2-1783978263106-63ff04bdd820
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/forwardemail" data-next-head=""
property="og:title" content="Auth.js | Forwardemail" 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%20Forwardemail" data-next-head=""

Load Info

page size17450
load time (s)0.114637
redirect count1
speed download153070
server IP 216.150.16.193
* all occurrences of the string "http://" have been changed to "htt???/"