Полагаю, что при клике на поле «Тип письма», например user_watching_first_post, должно отображаться подробное описание сообщения о недоставке, полученного от адресата.
Однако на моём самостоятельно размещённом сайте появляется указанное выше сообщение об ошибке. Что я могу сделать, чтобы это исправить?
Верно. Я только что проверил это на своём размещённом сайте Discourse, и всё работает без проблем. Если ваш сайт работает на последней версии Discourse, возможно, проблема связана с тем, как ваш почтовый сервер обрабатывает пересылку сообщения об ошибке.
Да, именно так его обновляют. Прошло уже довольно много времени с момента последнего обновления, но хорошим первым шагом будет обновление его и Discourse.
Я обновил оба компонента, но ошибка сохраняется, в том числе (как мне кажется) для писем, полученных после обновления. Есть ли какие-то дополнительные идеи?
Та же проблема. Самостоятельный хостинг, все актуально. Отказы обрабатываются рекомендованным способом. Ссылки, созданные до перехода на правильную обработку отказов, работают нормально.
Да, скорее всего, Discourse не получает его от Mailgun. Я не знаю, как работают вебхуки, но подозреваю, что они просто сообщают Discourse о временной или постоянной ошибке, не отправляя само сообщение об ошибке доставки.
Есть ли способ заставить эту функцию Discourse работать с Mailgun?
Должна быть возможность отображать хотя бы код ошибки и сообщение:
Код ошибки SMTP и сообщение об ошибке SMTP сохраняются
“code”: 550,
“address”: “'baz@example.com”,
“error”: “Сообщение не принято — недопустимый почтовый ящик. Локальный почтовый ящик 'baz@example.com недоступен: пользователь не найден”
Проводились ли какие-либо работы по этому вопросу? Я был бы очень признателен, если бы это было так
Я использую Digital Ocean и Mailgun (то есть основные рекомендуемые сервисы), поэтому предполагаю, что я не единственный, у кого возникла эта проблема.
После собственных тестов я заметил, что во многих случаях уведомления о недоставке (bounces) вообще не доходят до получателя письма. (Я обнаружил попытку подключения только для одного такого случая, и она была немедленно прервана). Я также не вижу, чтобы заголовок Return-Path устанавливался вообще (должен ли он быть?), что заставляет меня думать, что в большинстве случаев они даже не отправляются обратно.
Здесь тоже всё ещё проблема. Несмотря на моё предыдущее утверждение, теперь выясняется, что ни одна из этих ссылок не работает, начиная с запуска сайта. Изначально это, казалось, влияло только на отклонённые письма, полученные до того, как мы начали корректно обрабатывать такие случаи (Configure VERP to handle bouncing e-mails).
Я только что заметил в логе ошибок множество предупреждений следующего вида:
Email can not be processed: Email::Receiver::AutoGeneratedEmailError
Received: from ...
for <bounce+f7e463.5f70e9-...@forum.example.com>; ...
Subject: Your message couldn't be delivered
Возможно, именно поэтому в Discourse нет никаких деталей о недоставленных письмах.
Я не вижу этих ошибок в логах, но проблема сохраняется. Когда я нажимаю на значение типа электронной почты для записи в списке отклонённых писем, появляется сообщение «Произошла ошибка: Discourse::NotFound».
Это уже было выбрано. Я вернулся немного дальше в логе, и хотя я вижу occasional сообщения, связанные с электронной почтой, я не вижу тех, о которых вы упоминали.
Это ожидаемое поведение, когда отклонённый ответ не был обработан Discourse. Функция работает корректно, если Discourse получает отклонения, иначе он будет показывать этот ответ для всех отклонений.
В таком случае было бы хорошо иметь более точное сообщение.
Я полагаю, вы имеете в виду, что если Discourse узнаёт об отклонении только через веб-хук Mailgun, то детали отклонения никогда не передаются в Discourse. Так ли это?
При каких обстоятельствах Discourse обрабатывает отклонения вместо внешнего почтового сервиса? (Я знаю, что Discourse может отклонять или блокировать письма, но речь идёт об обработке уведомлений об отклонениях, полученных от получателей.)
Согласен. Если что-то на самом деле не сломано, оно не должно выглядеть сломанным. Discourse наверняка способен предоставить более успокаивающее сообщение.