Prepare one representative email each for sign-up, login, account recovery, and notifications. Record the trigger conditions and expected delivery time.
Release verification · 12 checkpoints
Email Testing Checklist: From “Sent” to “Ready”
Don’t just check whether the email arrived. Use a clean test inbox to verify identity, content, interactions, and fallbacks one by one, then hand the evidence to the release owner.
At minimum, check desktop and a 390px mobile viewport to ensure long subjects, buttons, and verification codes are not clipped.
Click links, copy verification codes, and try expired codes to confirm that destinations, states, and error messages are consistent.
Save send times, delivery times, screenshots, and issue IDs instead of simply writing “email looks fine.”
01 · Sender identity
Check the display name, From, Reply-To, and expected domain. Make sure the brand name has no environment suffix or spelling errors. Reply to a test email to confirm the response does not go to an unmanaged address.
Check whether the sender identity could make users mistake the message for phishing. If different email types use different subdomains, document the mapping in the test record.
02 · Subject line and preview text
The subject should explain the action and context while avoiding the full verification code, sensitive order details, or internal environment names. Preview text should add context to the subject, not repeat the first line of the body.
Check both short subjects and very long localized subjects. Confirm that the email’s purpose remains clear after client-side truncation.
03 · Verification codes
Check the length, grouping, copy experience, validity period, and one-time-use rules. When requesting two codes in succession, confirm that old and new codes are handled as designed.
Test incorrect, expired, and space-containing codes. Error messages should identify the problem without revealing account status.
04 · Links and buttons
The primary button must lead to the correct domain, path, and language, without including a test-environment hostname. Keyboard focus, button copy, and the destination page title should clearly explain the next step.
Check unsubscribe, preference, and plain-text links. After a link expires, provide a recovery path instead of a blank error page.
05 · HTML structure
With remote images disabled, the reading order, alternative text, and primary actions should still be understandable. Check that tables do not overflow on narrow screens and that screen readers do not announce decorative images repeatedly.
Make sure font size, line spacing, and contrast support comfortable reading. Do not use images to carry verification codes, amounts, or the only explanation of a critical point.
06 · Plain-text fallback
The plain-text version should contain the same core facts, complete links, and support details as the HTML version. After removing tracking parameters, links should still point to valid destinations.
Check whether line breaks, lists, and long URLs remain readable. If there is no plain-text version, record it as a release risk rather than silently passing it.
07 · Personalization fields
Test normal, blank, very long, and non-Latin names to ensure no template variables or stray punctuation appear. Format amounts, dates, and time zones for the recipient’s context.
If a field is missing, the fallback copy should sound natural and must not expose internal variable names. Do not use real sensitive customer data in production samples.
08 · Delivery speed
Record the trigger time and receipt time instead of judging delivery by feel. For verification-code emails, set acceptable thresholds based on the code’s validity period.
If delivery is delayed, first distinguish between the application queue, sender acceptance, destination mailbox filtering, and user refresh. Then decide whether to resend.
09 · State consistency
A single user action should not generate duplicate emails. When the interface says an email was sent, the backend should also create the corresponding event. A retry after failure must not reuse an old link or verification code.
Check state across tabs and after refreshing. A successfully delivered email should not leave the product interface showing a pending state.
10 · Accessibility
Use the keyboard to navigate links in reading order, confirming that focus is visible, button names are meaningful, and heading levels are sequential. Color in an email must not be the only way to communicate success or failure.
Use empty alternative text for decorative images and concise descriptions for informative images. Animations should respect reduced-motion preferences.
11 · Security and privacy
Make sure emails do not contain passwords, complete payment details, production keys, or unnecessary personal information. Account-recovery and login links should have a reasonable expiration and become invalid after use.
Use test addresses only for authorized content. Delete samples afterward, and do not set a disposable address as the long-term recovery address for an important account.
12 · Release decision
Classify results as pass, pass with risk, or release blocker, and attach reproduction steps to every failed item. State the client, viewport, language, and test time in the conclusion.
After fixing an issue, retesting only the individual item is not enough. Also regression-test the full path from triggering and delivery to opening and taking action.
Minimum release record
Keep at least the following fields for every test so the next colleague can reproduce it instead of relying on a verbal conclusion.
| Sample | Trigger and delivery | Client | Result |
|---|---|---|---|
| Sign-up verification code | Trigger time, delivery time, code validity period | Desktop web + mobile | Pass or issue ID |
| Password recovery | Link generated, first use, second use | HTML + plain text | Destination and expiration state |
| Notification template | Field combinations and time zone | Images on / off | Layout and copy risks |
Ready to start? Return to ForwardTop test inbox and create a new address so every test round starts with a clean sample.