Temporary addresses last 3 hours and can be extended to 24 hours if needed. View lifespan planner

Tutorials · 2026 practical guide

2026: How to Test Email Change Verification in Your Own Product—Check Old and New Addresses and Account Status

A new address receiving a message does not prove that an account changed its email. This guide breaks the test into new-address confirmation, any old-address notice, pending-state checks, and repeat-request behavior, with a comparison of test inbox options and evidence to retain.

The new address received a message, but the account still shows the old address.

For reliable email change verification testing, check the new-address confirmation, any old-address notice defined by the product, and the account state before and after link handling. Treat message generation, sending, inbox receipt, link processing, and an updated account record as separate results. The product’s own rules determine when the change takes effect.

Who this is for: Developers implementing or maintaining email-change flows in their own products.
QA engineers checking receipt, link behavior, and repeated requests.
Independent developers and product owners preparing evidence before release.

Start with the account state, not the inbox

A confirmation message is one part of the flow, not the outcome. A product may generate an email, hand it to a mail service, and still leave the account unchanged. Even a message visible in a test inbox shows only that it arrived there; the link may be invalid, the request may have been replaced, or the account update may have failed.

Before testing, write down the behavior the product is meant to implement. In particular, define:

  • Which event starts an address change: a profile edit, a settings form, or another authorized action.
  • Whether the new address remains pending until confirmed, and what the user sees during that period.
  • Whether the old address receives a security notice, a confirmation request, a cancellation option, or no message.
  • What happens to active sessions and account access while the new address is pending.
  • What the product should do when a link is opened again or belongs to an earlier request.

These are product requirements, not universal email-provider rules. OWASP treats an email change as an identity-sensitive event and discusses reauthentication, notification to the old address, confirmation of the new address, and dual-address confirmation for higher-risk situations. These are security recommendations to assess against the product’s threat model—not proof that every service follows the same sequence. See the OWASP guidance on email validation and verification.

Record the test account, environment, starting email value, and expected result before triggering a request. Use an account created for the authorized test, not a real customer’s address or a colleague’s mailbox without permission. A clear baseline makes it possible to tell whether the flow changed account data or merely produced a message.

Choose a test inbox that matches the evidence needed

The right test destination depends on what the test must prove. A test that checks message content needs access to the message itself. A test that checks only form validation may not need to receive any email. The comparison below is about evidence and tradeoffs; it does not imply that every mailbox type works with every application or delivery setup.

Test option Evidence it can provide Main limitation Best fit
Controlled inbox for each address Message content and arrival at the selected destination Needs isolation and a way to inspect both destinations Manual acceptance checks and receipt-dependent tests
Address aliasing on a controlled mailbox Separate address values routed to a mailbox the team can inspect Routing rules may obscure which address the application actually targeted Repeated tests where routing behavior is understood
Disposable test inbox Receipt and message content without using a personal work inbox Retention, address behavior, and compatibility depend on the service Short-lived manual checks when the inbox’s current terms fit the test
Mail capture in a test environment The application’s generated message and its contents at the capture point Does not prove delivery to an external inbox Template, link, and message-generation tests

A captured message and a received message answer different questions. Capture can show that the application constructed the expected recipient and link. An inbox can show that a message reached the test destination. Neither alone proves that the account’s email field changed. For guidance on choosing between a disposable address and an alias, see email aliases and temporary email addresses.

Keep the test destinations controlled. Do not place a real person’s address in a demo or staging flow unless that person has explicitly authorized the test and the handling is appropriate.

New-address confirmation scenario

Start with a fresh test account in the environment under review. Note its current address and confirm that no earlier pending request could affect the result. Then trigger the product’s own email-change flow and follow the behavior specified in its requirements.

Check the new-address path in distinct stages:

  • Confirm that the application accepted the request and recorded the intended new address as pending, if that is how the product works.
  • Inspect the test inbox assigned to the new address. Match the message to the current test run rather than relying on subject line alone.
  • Check that the message identifies the intended action and contains a link that belongs to this request.
  • Open the link using the expected test account and context. Record the response, including any error or confirmation screen.
  • Reopen the profile or an authorized test interface. Verify whether the account’s email value now matches the product’s expected post-confirmation state.

The target address in the message matters. A test can receive a valid-looking confirmation while the application has sent it to an address other than the one entered in the request. Likewise, the link may lead to a success screen without changing the account record. Validate both the user-visible result and the account state that the application considers authoritative.

If the link contains a token, avoid copying its raw value into shared issue trackers, chat, or long-lived test reports. Keep enough evidence to reproduce the test—such as a redacted URL, request identifier, and response—without exposing a usable credential. OWASP’s authentication guidance explains why sensitive account actions should be evaluated in the context of authentication and reauthentication requirements.

Old-address notice scenario

Do not assume that every product sends the same message to the old address. First check the product’s security requirements and current implementation. OWASP recommends considering notification to the old address as part of an email-change flow, but the exact destinations, content, and available actions remain product decisions.

If the product sends an old-address notice, test it as a separate path:

  • Assign a controlled test inbox to the account’s existing address.
  • Trigger the change request and verify whether the expected notice arrives there.
  • Confirm that the message refers to the current request, not a previous change attempt.
  • Check any confirmation or cancellation action against the product’s documented behavior.
  • Review the body and subject for unnecessary exposure of personal data, authentication details, or the full new address if the product’s policy does not require it.

A notice that says a change was requested is not necessarily approval of the change. A cancellation link, when present, also needs its own expected outcome: the test should verify whether using it cancels the pending request and what account state remains. It should not infer that behavior from the label of the button.

Security-sensitive changes may also affect sessions. Check the product’s defined policy for whether existing sessions continue, require reauthentication, or receive another treatment. OWASP’s session management guidance is relevant when a change in account identity information interacts with session handling. It does not prescribe the exact UI or state transition for every product.

Pending confirmation and account status

An unconfirmed request needs a defined state. Depending on the implementation, the account may continue using the old address until confirmation, display a pending new address, or follow another documented rule. Tests should assert that rule directly instead of treating the email as the source of truth.

At minimum, capture two views of the same run: the application state and the mail evidence. The application view can be a profile page, an authorized API response, or a test database assertion permitted by the team’s process. The mail evidence should identify the destination and the message associated with the request. Keep these artifacts linked by a run identifier, while redacting tokens and unnecessary personal data.

Useful distinctions for test results include:

  • Generated: the application created a message or mail event.
  • Submitted: the sending component accepted the message for the next delivery step.
  • Received: the controlled test inbox displays the matching message.
  • Processed: the confirmation link was handled and returned an observed result.
  • Updated: the account now has the email value required by the product’s post-confirmation rule.

These labels prevent a vague “email test passed” from hiding a failed state update. If an automated test waits for an inbox message, its assertion should report whether it timed out before receipt, found the wrong message, or received the expected message but failed to observe the account update. That diagnostic helps distinguish a mail-delivery problem from application logic.

For testing guidance that also covers minimizing exposed signup data, the signup privacy planner can help teams review which information a test flow actually needs.

Repeated requests are a separate scenario, not merely another attempt at the happy path. Use an isolated test account and follow the product’s actual replacement rules. Some implementations may replace a pending request; others may handle requests differently. Do not assume that a previous link expires after a particular period or that every new request invalidates earlier links.

Trigger one request, retain its test-run identifier, and then trigger a later request according to the test plan. Inspect which messages arrive at the new and old test destinations. Open each link only in the authorized test environment and record what the product does. The key assertion is not that a particular link “must” work or fail universally; it is that the observed behavior matches the product’s documented rules.

Also test a repeated open of the same link if the product’s requirements define that case. Check the response and account state after each action. A second success page, an already-used message, or a rejection may each be valid outcomes depending on the implementation. The test report should state which was observed rather than projecting a generic rule onto the product.

Where an implementation uses time-sensitive links, test the configured behavior from the application’s own settings and documentation. Do not hard-code an assumed expiration interval into a test unless that interval is an explicit product requirement. OWASP’s forgot-password guidance on reset tokens concerns password-reset flows; it can inform token-handling discussions, but it should not be presented as proof of the email-change link policy in a separate product.

Test execution and evidence

A repeatable test run can be organized around the following actions:

  • Create or reset an authorized test account and record its starting email value.
  • Assign controlled destinations to the new and old address roles; use separate inboxes when the test must distinguish them.
  • Trigger the change through the same interface or API path that the test is meant to cover.
  • Record application-side request status separately from any mail-sending event.
  • Inspect the appropriate test inboxes and match each message to the current request.
  • Open the relevant link and save the response with sensitive token material removed.
  • Recheck the account profile or authorized state interface and compare it with the expected result.
  • Run the pending, repeated-request, and prior-link cases required by the product’s own rules.
  • Store the environment, test account identifier, observed outcomes, and redacted evidence together.

These steps are intended for a product’s own development, staging, or otherwise authorized test environment. If reserved domains are useful for non-delivery examples in test data, RFC 2606 identifies reserved top-level domains including .test, .example, .invalid, and .localhost, and reserves example names such as example.com. See the RFC 2606 reserved-name specification. Such names are useful for illustrative or isolated test data; they are not substitutes for a controlled inbox when a test must prove receipt.

For privacy review, remove real customer details from screenshots and logs, and restrict access to test artifacts that contain message content or link information. If a test needs to demonstrate receipt at both addresses, arrange both controlled destinations in advance; a single inbox that forwards or aliases messages may make the recipient evidence less clear unless its routing is part of the test.

FAQ

Should both the old and new addresses receive a message?

Only when the product’s requirements specify both. The new address is commonly used to confirm control of the proposed destination, while an old-address notice can alert the account holder to a change request. OWASP discusses these as security considerations. Test the destinations and actions the product actually implements, and document any deliberate difference from the security recommendation.

What proves that a change is complete?

The product’s authoritative account state must show the expected address after the confirmation action. A message in the inbox proves receipt at that destination, and a success page proves that the page rendered, but neither independently proves that the account record changed. Compare the pre-confirmation and post-confirmation state using an authorized interface or test assertion.

What should an automated test wait for?

Wait for the evidence required by that test. A mail-generation test can inspect a captured message; a delivery test must inspect the controlled inbox; a full change-flow test must also check link processing and account state. Report each stage separately so a sending submission is not reported as inbox receipt, and inbox receipt is not reported as a completed account change.

Keep the test evidence proportionate

A strong acceptance record answers what was requested, which addresses were involved, which messages were observed, what happened when a link was opened, and whether the account state matched the specification. It also states the environment and avoids claiming that a result from staging proves production behavior. The same discipline makes failures easier to triage: the team can see whether the issue occurred before sending, during receipt, at link handling, or while updating the account.

For a manual run that needs real inbox inspection, a disposable test address can be one option alongside controlled mailboxes, aliases, and mail capture. Before choosing OrbForward for that role, check its current service information against the test’s specific requirements, including whether it can support the destinations and evidence needed. No inbox choice replaces the final assertion against the product’s account state.

Frequently asked questions

What should a test cover when an account changes its email address?

Check the request trigger, the message sent to the proposed new address, and any old-address notice required by the product’s own design. Then verify the link’s behavior and compare the account’s stored or displayed address before and after confirmation. Record delivery evidence separately from the application state so a received email cannot be mistaken for a completed change.

Should an email change confirmation go to the old address or the new one?

The new address generally needs a way to prove that it can receive mail, while a product may also notify or ask for confirmation from the old address. OWASP discusses these as security considerations, not a universal implementation rule. The test should follow the product’s documented policy and verify each destination that policy specifies.

How can a tester confirm that the account address changed after clicking the link?

After opening the link, inspect the account profile or an authorized test API and compare its email value with the expected post-confirmation value. Also check any pending-change indicator and the response shown by the application. A successful page load or a consumed link alone does not establish that the account record now contains the new address.

How can an automated test distinguish a sent email from one received in the test inbox?

Treat application events, mail transport events, and inbox evidence as separate observations. A queued or accepted message proves only that the sending path reached that stage; the test inbox must independently show the matching message before the test proceeds to link handling. Correlate observations with a test run identifier, and fail with a clear diagnostic if receipt cannot be confirmed.

Choose the right address for this signup

Use a temporary email for one-time codes and an anonymous forwarding alias for accounts you will keep, without exposing your real email.