all guides

// how to fix

Postmark error 406 "Inactive recipient": how to fix it

Postmark returns ErrorCode 406 when a recipient hard bounced, complained or was suppressed. See how to find why and when it is safe to reactivate.

What it means

Postmark refused to send because at least one recipient is marked as inactive in the message stream you are using. The API answer usually looks like this:

{
  "ErrorCode": 406,
  "Message": "You tried to send to recipient(s) that have been marked as inactive. Found inactive addresses: alice@example.com. Inactive recipients are ones that have generated a hard bounce, a spam complaint, or a manual suppression."
}

The HTTP status is 422. In the batch endpoint, the request itself succeeds and each message in the response has its own ErrorCode, so check every result, not only the HTTP status. Some libraries raise a dedicated exception (for example InactiveRecipientsError in the Node.js client).

Inactive addresses are listed in the Suppressions tab of each message stream. A suppression in your transactional stream does not apply to your broadcast stream, and the other way around.

Why it happens

Postmark marks an address inactive for one of four reasons:

  • Hard bounce: the receiving server said the address does not exist or cannot receive mail.
  • Spam complaint: the person clicked "Report spam" and their provider sent the complaint back.
  • Unsubscribe (mainly in broadcast streams): the person used the unsubscribe link.
  • Manually added: someone on your team or your code added the address to the suppression list.

This is the same idea as Mailgun's 605 "previously bounced address": the provider protects your reputation by not sending to addresses that already failed.

How to check

  1. In Postmark, open the server, then the message stream used by your code (for example "Default Transactional Stream").
  2. Open the Suppressions tab and search for the address. The reason (Hard Bounce, Spam Complaint, Manually Added, Unsubscribe) and the date are shown.
  3. For a hard bounce, open the related bounce in the Activity tab and read the original SMTP answer. "User unknown" means the address is dead. A full mailbox, a disabled account or a policy or spam block means the address may be fine. See bounce "552 5.2.2": mailbox full for one common case.
  4. If the bounce mentions spam or a block, send a test from the same Postmark server to the address on the Delivmail home page and read the authentication and blacklist sections of the report.

How to fix it

Hard bounce of an address that works again

Only when you have a good reason to believe the mailbox now works (the person told you, the typo was fixed, the full mailbox was emptied): in the Suppressions tab, search the address and click Reactivate. It becomes active immediately. You can also use the Suppressions API ("Delete a suppression") from your code. Some bounce types cannot be reactivated; Postmark then refuses the request.

Postmark does not resend messages that failed while the address was inactive. Send them again.

Hard bounce of a dead address

Do not reactivate it. Fix or remove the address in your database and ask the user for a new one.

Spam complaint

You cannot reactivate a complaint yourself. If the person contacts you and wants your emails again, Postmark asks you to contact their support with the address. If complaints are frequent, read too many people mark your emails as spam.

Unsubscribe or manual suppression

Reactivate only if the person really asked to receive messages again. Check why your code or a colleague added a manual suppression before removing it.

Handle 406 in your code

  • Catch error 406, log the address and mark it as undeliverable in your database instead of retrying. Retrying never works.
  • For password reset and similar emails, show the user a message such as "We cannot send to this address, please check it or use another one".
  • Use Postmark's bounce and spam complaint webhooks to keep your own list in sync.
  • When one recipient of a multi-recipient message is inactive, the whole message can be refused. Send transactional emails one recipient at a time.

Check that it is fixed

After reactivating, send one message to the address and check its status in the Activity tab: "Delivered" means the mailbox accepts mail again. If it bounces again, Postmark suppresses it again and the new bounce text tells you why. If the original reason was a block against your sending, run a new Delivmail test and fix any failed check before sending again.

Check that it is fixed

DNS changes can take from a few minutes to a few hours. Then send a new test email or scan your domain again.

Related guides