---
title: "Unusual email addresses | Proxy Mail QA"
description: "Test that your app accepts valid but unusual email addresses (plus tags, capitals, apostrophes) and rejects invalid ones, with addresses that still arrive."
url: https://proxymail.qa/docs/unusual-addresses
---

# Unusual email addresses

Sign-up forms often turn away addresses that are perfectly valid, like a plus sign or an apostrophe, or let through ones that can never receive mail. Every Proxy Mail QA address comes with variants that still land in its inbox, so you can check both.

The examples below use the test address `k7f2x9ab12cd@mailclub.dev`. Swap in your own.

## Variants that reach your inbox

Mail to any of these arrives in the same inbox as the plain address. Checked against our mail servers on 15 October 2026.

| What it tests                                         | Address                                                                       |
| ----------------------------------------------------- | ----------------------------------------------------------------------------- |
| Capitals                                              | K7F2X9AB12CD@MAILCLUB.DEV                                                     |
| A plus tag                                            | k7f2x9ab12cd+signup@mailclub.dev                                              |
| An apostrophe                                         | k7f2x9ab12cd+o'brien@mailclub.dev                                             |
| An ampersand                                          | k7f2x9ab12cd+r&d@mailclub.dev                                                 |
| Equals and question marks                             | k7f2x9ab12cd+a=b?c@mailclub.dev                                               |
| A slash and a percent sign                            | k7f2x9ab12cd+team/50%@mailclub.dev                                            |
| Braces, pipes and tildes                              | k7f2x9ab12cd+{x}\|\~y@mailclub.dev                                            |
| Dots inside the name                                  | k7f2x9ab12cd+first.last@mailclub.dev                                          |
| A second plus sign                                    | k7f2x9ab12cd+a+b@mailclub.dev                                                 |
| The longest name allowed (64 characters before the @) | k7f2x9ab12cd+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@mailclub.dev |

After the `+`, you can use letters, digits and any of `` ! # $ % & ' * + - / = ? ^ _ ` { | } ~ `` and dots (not two in a row, and not at the end). The text after the `+` shows on each email in the inbox, so you can tell which variant a message was sent to.

A custom address name (Add account → Custom name, or `name` in the API) can use the same characters, anywhere in the name and up to 64 in all: `o'brien@mailclub.dev`, `r&d.team@mailclub.dev` or `{qa}@mailclub.dev`. Only `+` is left out, because it starts a tag.

## Valid, but no inbox can take them here

The email standard allows these, but our mail servers (and most others) don’t accept them, so mail sent to them is refused before it arrives. They’re useful for checking what your app does when delivery fails.

| What it tests                                                   | Example                                                                        |
| --------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| A quoted name with a space                                      | "john doe"@mailclub.dev                                                        |
| A name that isn’t in Latin letters                              | josé@mailclub.dev, 用户@mailclub.dev                                             |
| A domain with no dot, which only works inside a private network | k7f2x9ab12cd@mailclub                                                          |
| 65 characters or more before the @                              | k7f2x9ab12cd+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@mailclub.dev |

## Invalid addresses

Your app should reject these before it tries to send anything. They need no inbox.

| What’s wrong                          | Example                                   |
| ------------------------------------- | ----------------------------------------- |
| No @                                  | k7f2x9ab12cd.mailclub.dev                 |
| Nothing before the @                  | @mailclub.dev                             |
| Nothing after the @                   | k7f2x9ab12cd@                             |
| Two @ signs                           | k7f2@x9@mailclub.dev                      |
| A space                               | k7f2 x9@mailclub.dev                      |
| A dot at the start or end of the name | .k7f2@mailclub.dev, k7f2.@mailclub.dev    |
| Two dots in a row                     | k7f2..x9@mailclub.dev                     |
| Two dots in the domain                | k7f2x9ab12cd@mailclub..dev                |
| A domain starting with a hyphen       | k7f2x9ab12cd@-mailclub.dev                |
| Angle brackets or a comma             | <k7f2>@mailclub.dev, k7f2,x9@mailclub.dev |

## With the API or an agent

The REST API and MCP tools take a variant wherever they take an address, and act on the plain one. Waiting on a variant with a `+tag` only finds mail sent to that variant; waiting on the plain address finds mail sent to any of them. Pass `since` (the time your test submitted the form) as usual.

`GET /v1/addresses/{address}/variants` lists all of the above for one of your addresses: `delivered`, `undeliverable` and `invalid`, each with what it tests. See the [REST API reference](https://proxymail.qa/docs/reference/operations/getvariants/).

When an address goes in a URL path, encode it: `encodeURIComponent` in JavaScript turns `'` into `%27`, `+` into `%2B`, `/` into `%2F` and `?` into `%3F`.

A coding agent can make the variants itself from the table above: ask it to “try signing up with an apostrophe and a plus tag in the email address, and check the code still arrives”.

[Previous Finish a run](https://proxymail.qa/docs/reference/operations/finishrun.html) [Next Limits and safety](https://proxymail.qa/docs/limits.html)
