コンテンツへスキップ
まとめ
- Docker 側のコードは
mailhog/mailhog
イメージを使うだけ。
- Laravel 側では、
.env
を変更するだけ。
まとめ
- MTA として exim4 (Exim Internet Mailer) を使う。
- exim4 を php:apache コンテナにインストールする。
- PHP からメールを送信できるようになった。
- Laravel から sendmail ドライバーでメールを送信できるようになった。
- 次のページが大いに参考になった (ありがとうございます!) 。
ポイント
- 送信アドレス誤りは同イントラ内限定で検出できた。別ドメインへのメール送信エラーは制御出来ない。
- 複数のアドレスに送信するときにアドレス誤りを検出するには、SmtpFailedRedipientsException と SmtpFailedRecipientException の両方でキャッチする必要がある。
- 1 つのアドレスにだけ送信する場合は、SmtpFailedRecipientException のみでよい。
- 送信できなかったメールアドレスは、SmtpFailedRecipientException.FailedRecipient に格納されている。
- Host、Port、userName、password に原因がある (つまりサーバに接続できない) 場合は SmtpException でキャッチできる。
他のポイント
- メールを送るには、MailMessage クラス、SmtpClient クラスの 2 つが必要
- MailMessage クラスはメール自体を扱うクラス
- From、To、CC、BCC、添付ファイル、件名、本文などを扱う。
- メールアドレスの追加は、MailAddress クラスにメールアドレス文字列を渡してインスタンス化したものを使う。
- SmtpClient クラスはメールを送るときの認証情報を扱うクラス。
- SMTP サーバ名、ポート番号、ユーザー名、パスワード、SSL の使用などを扱う。
- ユーザ名、パスワード の追加は、NetworkCredential クラスにユーザー名、パスワード文字列渡してインスタンス化したものを使う。