|
Illustrative browser preview with sample data. Links are inactive. Test final rendering in your supported email clients.
When to use it
Send after a person requests a password reset. Generate and validate the token in your account system; the template does not implement the reset.
Make it yours
Replace every placeholder using your template engine. Escape values for their HTML context and validate action URLs against your approved HTTPS origins.
| Variable | Illustrative value |
|---|---|
{{app_name}} | Atlas |
{{reset_url}} | https://example.com/reset?token=sample-only |
{{expiry_minutes}} | 30 |
{{support_email}} | support@example.com |
Implementation checklist
- Match the expiry text to your server’s actual token lifetime.
- Escape all variables and allow only approved HTTPS reset URLs.
- Opening the link must not change the password.
- Test an expired token and a second use of the same token.
Inspect the source
HTML source
<!doctype html>
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Reset your {{app_name}} password</title></head>
<body style="margin:0;padding:0;background:#f3f5f4;color:#26352e;font-family:Arial,Helvetica,sans-serif;">
<table role="presentation" style="width:100%;border-collapse:collapse;"><tr><td style="padding:24px 12px;">
<table role="presentation" style="width:100%;max-width:560px;margin:0 auto;border-collapse:collapse;background:#ffffff;border:1px solid #dce5df;">
<tr><td style="padding:32px 28px 12px;font-size:16px;font-weight:bold;">{{app_name}}</td></tr>
<tr><td style="padding:8px 28px 28px;">
<h1 style="margin:0 0 20px;font-size:26px;line-height:1.3;font-weight:600;">Reset your password</h1>
<p style="margin:0 0 20px;font-size:16px;line-height:1.7;">We received a request to reset the password for your {{app_name}} account.</p>
<p style="margin:0 0 24px;font-size:14px;line-height:1.7;">This link expires in {{expiry_minutes}} minutes and can be used once.</p>
<table role="presentation" style="border-collapse:collapse;margin-bottom:24px;"><tr><td bgcolor="#274f3b" style="border-radius:4px;background:#274f3b;text-align:center;"><a href="{{reset_url}}" style="display:inline-block;padding:14px 22px;color:#ffffff;text-decoration:none;font-size:16px;font-weight:bold;">Reset password</a></td></tr></table>
<p style="font-size:13px;line-height:1.7;margin:0 0 8px;">If the button does not work, copy this link into your browser:</p>
<p style="font-size:12px;line-height:1.7;margin:0 0 25px;word-break:break-all;"><a href="{{reset_url}}" style="color:#245f45;">{{reset_url}}</a></p>
<p style="font-size:13px;line-height:1.7;margin:0;color:#58655e;">If you did not request a password reset, you can ignore this email. Your password has not changed.</p>
</td></tr><tr><td style="padding:20px 28px;border-top:1px solid #e6ebe8;font-size:12px;line-height:1.7;color:#58655e;">{{app_name}} · Questions? <a href="mailto:{{support_email}}" style="color:#245f45;">{{support_email}}</a></td></tr>
</table></td></tr></table></body></html>Plain-text version
Reset your {{app_name}} password
Reset your password
We received a request to reset the password for your {{app_name}} account.
This link expires in {{expiry_minutes}} minutes and can be used once.
Reset password:
{{reset_url}}
If you did not request a password reset, you can ignore this email. Your password has not changed.
{{app_name}}
Questions? {{support_email}}
Free to use, modify, and distribute in personal or commercial projects. No attribution required. Supplied as a starting point without warranty.