Amazon SES

Amazon SES email address is not verified

Why Amazon SES returns "Email address is not verified" (MessageRejected) and how to fix it: verify identities in the right AWS Region or leave the SES sandbox.

Updated Jul 1, 2026

The short answer

Amazon SES throws "Email address is not verified" (a MessageRejected error) when you send from a From/Source/Sender/Return-Path identity that isn't verified in the AWS Region you're calling. While your account is in the SES sandbox, every recipient must also be verified. Fix it by verifying the identity in the correct Region, or by requesting production access.

The full error reads: Email address is not verified. The following identities failed the check in region <REGION>: <identity1>, <identity2>... It is a MessageRejected error (an MessageRejectedException in the AWS SDKs, though the actual exception name may vary by SDK) returned when your call to SES fails — via the API, an SDK exception, or the SMTP interface — before any mail leaves SES, so you are not billed for the rejected message.

What causes "Email address is not verified" in Amazon SES?

Per the AWS SES error reference, there are three distinct triggers — the region: value and listed identities in the message tell you which one applies:

  • An unverified sender identity. SES requires every identity used as the From, Source, Sender, or Return-Path address to be a verified email address or domain. The listed identities are the ones that failed.
  • Wrong AWS Region. Verification status is per-Region. An identity verified in us-east-1 does not exist in eu-west-1. If the region: in the error isn't where you verified, that's the cause — including the common case where your SDK/SMTP endpoint defaults to a Region you didn't intend.
  • Sandbox: an unverified recipient. While your account is in the SES sandbox, you must also verify every recipient (To/CC/BCC), except addresses at the mailbox simulator. So a verified sender can still trip this error on the recipient.

How do I fix "Email address is not verified"?

  1. Read the region: and identity list in the error — they pinpoint the exact failing identity and Region. Don't guess.
  2. Verify the identity in the matching Region. In the SES console, switch the Region selector (top-right) to the Region in the error, open Configuration > Identities, and create/verify the address or domain. Status must read Verified, not "Pending"/"Failed". To send from the same domain in multiple Regions, verify a separate identity in each.
  3. Confirm which Region your code targets. Check the region/endpoint in your SES client or SMTP host (e.g. email-smtp.us-east-1.amazonaws.com). Point it at the Region where your identities are verified, or verify them where your code points.
  4. If you're in the sandbox, either verify each recipient address, send only to the mailbox simulator for testing, or — the real fix for production — request production access to lift recipient verification (sandbox status is also per-Region).
  5. Check spelling and the address used at send time. Confirm the From/Source your application actually passes matches a verified identity exactly. Domain verification covers basic sending for any address at that domain, so verifying the domain avoids per-address upkeep for everyday sends — but an address that only inherits verification from its domain is limited to straightforward sending; using it with configuration sets, delegated-sending authorization, or domain-setting overrides requires explicitly verifying that specific address.

If you reach SES through Courier, set the From address in your SES provider config to a verified identity in your account's Region, and move that account out of the sandbox before sending to real recipients.

FAQ

Common questions

Yes, for straightforward sending. Once a domain identity is verified, you can send from any address at that domain in that Region without verifying each address individually. This is the recommended approach for production to avoid per-address maintenance. However, an address that only inherits verification from its domain can't be used for more advanced sending — configuration sets, delegated-sending authorization, or domain-setting overrides — without explicitly verifying that specific address.

One API, every provider

Stop debugging raw provider errors

Courier connects to your email, SMS, and push providers, handles retries and failover, and surfaces delivery errors in plain language.

Last reviewed Jul 1, 2026. Courier is not affiliated with third-party providers; error behavior may vary by implementation.