メール:メールが無効な場合に配信成功を報告しないテストrakeタスク

Email test area should warn if emails are disabled と同様に:

これは誤解を招きます:

$ 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 のみをテストするようにする
「いいね!」 1

あのコードの一部には私が関わっていたかもしれません……

つまり、メールが受け付けられたという話は嘘だったのですか?

私が最も望むのは、rake タスクが「メール送信無効」設定を無視することです。コンソールにアクセスできる人がいれば、テストメールを送信できるようにすべきです。

「いいね!」 1

同意します。それは良い点ですね。念のため、メールを送信しつつ、メール送信が無効になっていることを報告するというのも良いかもしれません。

「いいね!」 2

SiteSetting.disable_emails が原因でメッセージが送信されない問題は再現できませんでしたが、スクリプトを EmailLog が返された場合のみ成功として報告するように変更し、disable_emails 設定に関する追加の警告を追加しました。

$ bin/rake 'emails:test[]'
localhost:1025、ユーザー名:、認証: で送信テストを実行中。
SMTP サーバーへの接続に成功しました。
宛先へ送信中...
メールは送信されませんでした。

理由: message.to が空白です

### 警告
`disable_emails` サイト設定が現在、staff 以外に設定されています。
さらにトラブルシューティングを行う前に、これを 'no' に変更することを検討してください。

また、

michael@example.com へ送信中...
SMTP サーバーがメールを受け付けました。
Message-ID: dfaf1c88-aab6-474b-b50c-8c500afb6291@localhost

メッセージが届かない場合は、スパムフォルダを確認してください
[...]

https://github.com/discourse/discourse/pull/13674

「いいね!」 3

このトピックは21時間後に自動的に閉鎖されました。新しい返信は受け付けておりません。