Устранение неполадок

Не приходит письмо с подтверждением: как узнать причину

У письма с подтверждением, которое так и не пришло, не так много возможных причин — и все они далеко не равновероятны. Вот они по порядку, в котором стоит проверять: начиная с той, что занимает десять секунд и чаще всего оказывается верной.

  • Начальный
  • 12 мин на чтение
Синий конверт остановлен опущенным шлагбаумом под средней из трёх арок; в конце пути его ждёт открытый пустой почтовый ящик

Начните с проверки за одну минуту

Прежде всего сделайте эти четыре шага. Вместе они объясняют большинство пропавших писем с подтверждением, и каждый занимает не больше времени, чем чтение этого предложения.

  1. Сверьте адрес посимвольно. Не тот, что у вас в голове, — тот, что реально открыт перед вами, против того, что реально введён в форму. rn и m, l и 1, лишняя точка, пропущенная точка: адрес, отличающийся на один символ, — это совершенно исправный чужой ящик, а не ваш.
  2. Проверьте, какой домен вы использовали. Доступны три публичных домена, и одно и то же имя перед каждым из них — это три разных ящика. k7fq2m@grabmail.io и k7fq2m@mixozia.com никак не связаны между собой.
  3. Убедитесь, что вы смотрите не в алиас. Алиас — это адрес, который вы раздаёте другим; ящик же открывается под адресом, который вы оставляете себе. Проверка алиаса всегда покажет пустой ящик — не потому, что письмо задерживается, а потому, что под ним никогда ничего не хранится.
  4. Попросите сайт отправить письмо ещё раз. У большинства форм регистрации есть ссылка для повторной отправки, и это ничего не стоит. Если второе письмо приходит мгновенно, первое потерялось на стороне отправителя, и здесь расследовать нечего.

Сколько должно идти письмо с подтверждением

Обычно письмо с подтверждением появляется через две-три секунды после нажатия кнопки. Вот что означает более долгое ожидание:

Сколько времени прошлоЧто происходит, скорее всегоЧто делать
Меньше 5 секундНорма. Письмо ещё в пути по сети.Ничего. Ящик обновится сам.
От 5 до 60 секундОтправляющая сторона поставила письмо в очередь — загруженный провайдер или рассылка, которая запускается раз в минуту.Подождите.
От 1 до 5 минутОтправитель ограничивает скорость, повторяет попытку или держит письмо в очереди модерации.Запросите повторную отправку — один раз. Если пропадут оба письма, это говорит о куда большем, чем пропажа одного.
Больше 5 минутДело не в задержке, а в сбое.Разберите остальные пункты этого руководства.

Одна задержка бывает и по нашей вине, и о ней стоит знать. Если наш слой хранения недоступен, почтовые серверы принимают и удерживают всё, что приходит, вместо того чтобы отклонять, и доставляют это, как только слой снова в строю, — в пределах 5 дней. Отправляющий сервер никогда не получает окончательный отказ из-за проблемы на нашей стороне, потому что такие отказы отправители не повторяют. Поэтому письмо, которое действительно задержалось, всё равно дойдёт.

Сайтрешает отправитьЕго почтовый серверпередаёт его smtp.grabmail.ioВаш ящикхранит его 5 днейНе отправленоАдрес отклонёнОткрыт не тот ящик
Есть три места, где письмо с подтверждением может застрять, и из ящика видно только последнее. От того, на каком именно рубеже оно остановилось, зависит, что вы можете сделать.

Вы проверяете не тот ящик

Это самая частая причина и самая незаметная: адрес с одной ошибкой в написании — это совершенно исправный ящик, в который просто никто ничего не отправлял. Заметить тут нечего, потому что заранее здесь не создаётся ничего. Вот шесть вариантов, как это происходит:

Опечатка — с любой стороны
В форму ввели один вариант, а в ящик проверяют другой. Копируйте и вставляйте адрес в обе стороны, а не набирайте его по памяти с экрана.
name+tag@ — это не name@
Плюс-адресация здесь открывает отдельный ящик, а не помечает тегом уже существующий. Это сделано намеренно — тегами люди разделяют регистрации между собой, — но значит это и то, что shop+aug@grabmail.io никогда не появится в shop@grabmail.io. Открывайте адрес ровно так, как вы его набрали, вместе с тегом.
Другой публичный домен
Одно и то же имя на grabmail.io, mixozia.com и linqmail.com — это три никак не связанных ящика. Общего между ними ничего нет.
Алиас, а не адрес
Алиас доставляет письма в ящик, но прочитать их через него нельзя. Вставьте алиас туда, где проверяете почту, и он останется пустым навсегда, сколько бы писем ни пришло.
Услужливый телефон
Автозамена и автозаглавные буквы переписывают адрес прямо во время ввода. Заглавные буквы не страшны — здесь всё приводится к нижнему регистру, — а вот слово, изменённое автозаменой, это уже другой адрес.
Чужой ящик, ненадолго
Короткие, очевидные имена на публичном домене достаются всем, кому они приходят в голову. Если вы использовали test@ или hello@, кто-то другой мог открыть ваше письмо или удалить его раньше, чем вы туда заглянули.

Сайт вообще не отправил письмо

Это стоит исключить в первую очередь: что бы вы ни делали на своей стороне, это не поможет. Формы регистрации отказывают молча куда чаще, чем принято думать:

  • Аккаунт уже существует. Многие сайты отвечают «мы отправили вам ссылку» независимо от того, новый это адрес или нет, а если не новый — не отправляют ничего. Это осознанная защита от массового сбора адресов, и практика хорошая, — но со стороны она неотличима от потерянного письма.
  • Адрес отклонили уже после того, как форма поблагодарила за регистрацию. Некоторые чёрные списки проверяются в момент отправки письма, а не в момент заполнения поля.
  • Отправка идёт по расписанию. Рассылка раз в пять-десять минут — обычное дело для небольших сайтов, и на странице об этом никак не предупреждают.
  • Их провайдер отклонил письмо. Уведомление об отказе уходит им, а не вам, и до живого человека оно доходит не всегда.
  • Превышен лимит повторных отправок. Три запроса за минуту — и четвёртый отбрасывается без каких-либо объяснений.

Отличить всё это от проблемы с доставкой можно одним тестом, и он займёт минуту: получите на тот же адрес что-нибудь ещё. Подойдёт форма «забыли пароль» с любого другого сайта. Если это письмо приходит, а подтверждение — нет, дело в отправителе, и никакое ожидание этого не изменит.

Сайт отклоняет одноразовые адреса

Многие сервисы ведут списки доменов одноразовой почты, и публичные домены отсюда в них тоже есть. Это единственная причина, которая сама собой не проходит, поэтому её стоит распознать быстро. Проявляется она в двух видах, и только один из них честно показывает, что происходит.

Что вы видитеЧто происходит на самом делеЧто это значит для вас
«Введите действительный email-адрес» — ещё до отправки формыДомен есть в списке, который форма проверяет прямо во время ввода.По крайней мере это видно. Попробуйте другой публичный домен или адрес на собственном домене.
Форма принимает адрес, но письмо так и не приходитПринят при регистрации, а отброшен уже при отправке письма — либо отправлен в очередь модерации, которую никто не разбирает.Тихий сбой. Именно на нём люди теряют полдня, прежде чем заподозрить, в чём дело.
В прошлом месяце работало, а сегодня — нетОбновился список. Вы тут ни при чём.Стабильно работает только адрес, о котором списки ещё не знают.

Способа разблокировать заблокированный домен не существует, а любой сервис, обещающий «временную почту, которая работает везде», — это просто список, который ещё не успели обновить. Работает только адрес, которого нет ни в одном списке, — об этом следующий раздел.

Подробнее об этом, включая то, что именно проверяют такие списки, — в руководстве о регистрации без настоящего адреса.

Решение, которое снимает проблему целиком

Одна MX-запись на домене, которым вы уже владеете, превращает любой адрес на нём в ящик здесь. Это бесплатно, занимает несколько минут и сразу снимает три причины из перечисленных выше:

  • О нём не знает ни один чёрный список. Ваш домен нигде на этом сайте не публикуется, так что фильтру не с чем его сверять.
  • Его никто не подбирает. Публичные домены упомянуты здесь на каждой странице; ваш — нет, поэтому даже короткий адрес на нём не достанется посторонним.
  • Отдельный адрес под каждый сервис, без пересечений. Сегодня forum@, завтра shop@ — оба на домене, которым пользуетесь только вы, и как только один из них начинает получать спам, вы точно знаете, кто его продал.

Сама запись — это одна строка, и её публикация целиком служит доказательством владения: создавать аккаунт и что-то подтверждать не нужно:

MX-запись для вашего домена10 smtp.grabmail.io

Полная инструкция здесь: сама запись, что доказывает её публикация и честные ограничения ящика без пароля.

Когда ответа ждёт не человек, а тестовый скрипт

Всё сказанное выше по-прежнему применимо, плюс три сбоя, которые задевают только скрипты:

Пустой ящик — это не ошибка
Здесь ничего не создаётся заранее, поэтому адрес, на который никогда ничего не приходило, отвечает 200 с count: 0 и пустым списком. 404 получают только домены, которые мы не обслуживаем. Код, который считает «пусто» ошибкой, сдаётся за секунду до того, как придёт письмо.
Вы засыпаете вместо того, чтобы опрашивать
Фиксированный sleep(5) в удачный день слишком долгий, а в неудачный — слишком короткий. Опрашивайте раз в секунду до заранее заданного времени по часам и завершайте тест с ошибкой по истечении этого срока, а не после фиксированного числа попыток.
Вы превысили лимит запросов
Один запрос в секунду на адрес. Сверх этого вы получаете 429 с заголовком Retry-After в целых секундах. Клиент, который игнорирует этот заголовок и продолжает слать запросы, в итоге ждёт только дольше.
опрашивайте, пока не придёт письмо, либо сдавайтесь через 60 секунд
deadline=$(( $(date +%s) + 60 ))
while [ "$(date +%s)" -lt "$deadline" ]; do
  n=$(curl -sG https://grabmail.io/api/v1/mailbox \
        --data-urlencode "address=$ADDR" | jq '.count')
  [ "$n" -gt 0 ] && break
  sleep 1
done

Как делать это правильно — отдельное руководство: сквозное тестирование потока проверки email — с помощниками для Playwright и pytest, которые не флакуют, и разбором сбоев, из-за которых это неудобно делать в CI.

Письмо пришло, но его больше нет

Есть три причины, по которым письмо, которое действительно пришло, сейчас перед вами не окажется:

Истёк срок хранения
Всё удаляется через 5 дней после доставки — прочитано оно или нет. Отсчёт начинается с момента доставки, и у каждого сообщения есть поле expires_at, так что клиенту не нужно вычислять эту дату самому.
Кто-то его удалил
На публичном домене открыть ящик и удалить из него что угодно может любой, кто знает адрес. Если вы использовали короткое, легко угадываемое имя, этим «кем-то» вполне могли быть не вы.
Вы сами его удалили
В ящике есть кнопка удаления, а в API — вызов DELETE. Оба срабатывают мгновенно, и отменить ни один из них нельзя.

Если письма всё ещё нет

Писать в поддержку некуда, и это не грубость, а осознанный выбор: сервис, построенный на неавторизованной одноразовой почте, — не то место, куда стоит отправлять то, что обязательно должно быть прочитано. Поэтому все оставшиеся шаги вы можете сделать сами.

  1. Проверьте, работает ли сервис. Страница статуса показывает почтовые серверы, API и сайт отдельно друг от друга, поэтому «ничего не приходит» и «сайт тормозит» никогда не перепутаются.
  2. Попробуйте другой публичный домен. Если один в чёрном списке у отправителя, два других вполне могут в нём не быть.
  3. Попробуйте адрес на собственном домене. Это разом снимает все чёрные списки, и только этот способ даёт такую гарантию.
  4. Зайдите другим путём. Войдите через уже существующий аккаунт или по номеру телефона, если сайт вообще это предлагает.
  5. Признайте, что дело в отправителе. Если письмо откуда угодно ещё приходит в тот же ящик через несколько секунд, значит ящик работает, а это письмо ему просто не передали.

И если это письмо с подтверждением было единственным, что стояло между вами и аккаунтом, который вам действительно важен, — воспримите это как намёк и используйте для него настоящий почтовый ящик. Одноразовый адрес — правильный инструмент для регистраций, которые перестают что-то значить через час, а таких большинство, но эта — не из их числа.

Вопросы

Сколько времени должно идти письмо с подтверждением?

Здесь норма — две-три секунды. Меньше минуты — тоже ничего необычного, это отправляющая сторона поставила письмо в очередь. Больше пяти минут значит, что произошёл сбой, а не задержка, и дальнейшее ожидание почти никогда ничего не меняет.

Нужно ли проверять папку «Спам»?

Нет. Здесь ничего не фильтруется, не сортируется и не отправляется в карантин: на каждый адрес — один ящик, и всё, что в него доставлено, там и лежит. Если письма там нет, значит его и не доставляли, — это заметно сужает поиск.

Сайт говорит, что отправил письмо, а в ящике пусто — почему?

Чаще всего потому, что адрес, который вы проверяете, не совпадает с тем, на который отправляли: опечатка, другой публичный домен, +tag или алиас. Следующая по частоте причина — многие сайты отвечают «отправлено» независимо от того, был ли адрес уже зарегистрирован, а если был, не отправляют ничего.

Почему письмо на name+tag@ не появилось в ящике?

Потому что name+tag@ здесь — отдельный ящик, а не метка на name@. Откройте адрес ровно так, как ввели его в форму, вместе с тегом, — и письмо найдётся.

Блокируются ли какие-то отправители?

Ни один отправитель не фильтруется. Прямо во время SMTP-сессии отклоняются только две вещи, так что отправитель узнаёт об этом сразу, а не остаётся в неведении: письмо больше 5 MB и почта для домена, который мы не обслуживаем. Хост, открывающий неоправданно много соединений, блокируется на десять минут — из-за этого его письма задерживаются, а не теряются.

Форма пишет, что адрес недействителен — это правда?

Адрес вполне действителен — просто домен есть в чёрном списке одноразовой почты. Другой публичный домен иногда проходит, а адрес на собственном домене проходит всегда.

Можно ли вернуть письмо после того, как оно удалено?

Нет. Удаление через 5 дней после доставки — это жёсткий предел, который обеспечивает фоновая задача, а не настройка: экспорта, архива и отмены не предусмотрено. Всё, что должно пережить этот срок, нужно забрать и сохранить у себя.

Ссылка из письма с подтверждением сработает, если открыть её завтра?

Это правило отправителя, а не наше — большинство кодов и ссылок истекают за минуты или часы. Само письмо хранится здесь 5 дней, так что прочитать, что в нём было, можно всегда, даже после того, как ссылка внутри уже перестала работать.

Можно ли ответить на письмо и попросить отправить его снова?

Нет. Этот сервис только принимает почту и никогда её не отправляет: наш SPF — v=spf1 -all, а DMARC — p=reject, так что всё, что якобы приходит с адреса отсюда, — подделка. Вместо этого используйте кнопку повторной отправки на сайте.

Читать дальше

Попробуйте, пока свежо

Адрес — это один клик, без аккаунта и карты. Всё из этого руководства сразу заработает на нём.

С возвращением

Ваши ящики и ваши домены в одном месте.