$ rake 'emails:test[michael@example.com]'
Testing sending to michael@example.com using mx-out:25.
SMTP server connection successful.
Sending to michael@example.com. . .
Mail accepted by SMTP server.
If you do not receive the message, check your SPAM folder
or test again using a service like http://www.mail-tester.com/.
If the message is not delivered it is not a problem with Discourse.
Check the SMTP server logs to see why it failed to deliver the message.
В данном случае письмо не было отправлено, так как SiteSetting.disable_emails == "non-staff".
Мы должны предупредить об этом в задаче rake. Хотим ли мы:
добавить логику в Email::Sender#send, которая возвращает значение, указывающее, было ли письмо отправлено (например, sent, skipped, disabled, no_message);
или добавить логику в задачу emails:test, которая проверяет только disable_emails?
Кажется, я имел какое-то отношение к части этого кода…
Так что утверждение о том, что письмо было принято, — это ложь?
Мне бы очень хотелось, чтобы задача Rake игнорировала настройку отключения почты. Если у кого-то есть доступ к консоли, он должен иметь возможность отправить тестовое письмо.
Мне не удалось воспроизвести проблему с отправкой сообщения из-за SiteSetting.disable_emails, но я изменил скрипт так, чтобы он сообщал об успехе только в случае возврата EmailLog, а также добавил дополнительное предупреждение для настройки disable_emails.
$ bin/rake 'emails:test[]'
Тестирование отправки на через localhost:1025, имя пользователя: с аутентификацией .
Успешное подключение к SMTP-серверу.
Отправка на . . .
Письмо не было отправлено.
Причина: поле message.to пустое
### ВНИМАНИЕ
Настройка сайта `disable_emails` в настоящее время установлена в значение non-staff.
Перед дальнейшим устранением неполадок рассмотрите возможность изменить её на 'no'.
и
Отправка на michael@example.com. . .
Письмо принято SMTP-сервером.
Message-ID: dfaf1c88-aab6-474b-b50c-8c500afb6291@localhost
Если вы не получили сообщение, проверьте папку SPAM
[...]