Memo

メモ > サーバ > 各論: エトセトラ > MailHogでメールの受信をテストする

■MailHogでメールの受信をテストする
ローカルでメール受信のテストに使える Vagrantの場合は必要性はあまり感じないかもしれないが、ローカルのDocker環境などでは有効かも MailHogでメール送受信のテストをする - Qiita https://qiita.com/hideji2/items/1919d5759cf42146f919 ■導入
# wget https://github.com/mailhog/MailHog/releases/download/v0.2.1/MailHog_linux_amd64 # chmod +x MailHog_linux_amd64 # ./MailHog_linux_amd64 2019/06/06 16:27:39 Using in-memory storage 2019/06/06 16:27:39 [SMTP] Binding to address: 0.0.0.0:1025 [HTTP] Binding to address: 0.0.0.0:8025 2019/06/06 16:27:39 Serving under http://0.0.0.0:8025/ Creating API v1 with WebPath: Creating API v2 with WebPath: [APIv1] KEEPALIVE /api/v1/events [APIv1] KEEPALIVE /api/v1/events [APIv1] KEEPALIVE /api/v1/events
「KEEPALIVE」の文字が表示されたら起動に成功していると思われる。初回は2〜3分かかるかも? この状態で以下にアクセスすると、メールの一覧画面が表示された このために Vagrantfile を編集したり…は不要だった http://192.168.33.10:8025/ Ctrl+C で終了される 終了すると、上記画面も表示されなくなった MailHog実行用に、ターミナルを1つ立ち上げておくと良さそう ■コマンドで送信 以下のようにすれば、コマンドからMailHog経由でメールを送信できる
$ echo "test" | mail -s "title" -S "smtp=smtp://localhost:1025" -r from@example.com to@example.com $ echo "テスト。 これはテストです。" | mail -s "テストメール" -S "smtp=smtp://localhost:1025" -r from@example.com to@example.com
「-S」でSMTPサーバを指定できる mailコマンドでSMTPサーバを指定してメール送信する方法 | ぴぐろぐ https://pig-log.com/mail-smtp-linux/ ■PHPからSMTPで送信 例えばPHPMailerを使用した場合、以下のようにすればMailHog経由でメールを送信できる
<?php require_once 'PHPMailer/class.phpmailer.php'; require_once 'PHPMailer/class.smtp.php'; // SMTPサーバ: ホスト define('SMTP_HOST', 'localhost'); // SMTPサーバ: 送信ポート define('SMTP_PORT', '1025'); // メール送信準備 $mail = new PHPMailer(); $mail->isSMTP(); $mail->Host = SMTP_HOST; $mail->Port = SMTP_PORT; // メール内容定義 $mail->CharSet = 'UTF-8'; $mail->Encoding = 'base64'; $mail->setFrom('from@example.com', 'メール送信者'); $mail->addAddress('to@example.com', 'メール受信者'); $mail->Subject = 'MailHogからの送信テスト'; $mail->Body = "テスト。\r\nこれはMailHogからの送信テストです。"; // メール送信 if (!$mail->send()) { exit('Error: ' . $mail->ErrorInfo); } exit('complete');
■PHPの mail 関数で送信 mhsendmailを追加導入すれば、PHPのメール送信関数からMailHog経由でメールを送信できる
# curl -sSLO https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 # chmod +x mhsendmail_linux_amd64 # mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail # vi /etc/php.ini
sendmail_path = "/usr/local/bin/mhsendmail --smtp-addr=localhost:1025"
# service httpd restart
mb_send_mail 関数で送信してMailHogで受信できる ただしこの方法だと日本語メールは文字化けする 現状対処方法は見つけられていない php.ini でSMTPサーバを指定する方法はあるようだが、Windows専用の設定らしい dockerコンテナでPHPからのメール送信とhttpsに対応する - Qiita https://qiita.com/kinoleaf/items/0b0002aa03993e58e2f0 ■Dockerで利用 ※未検証 dockerコンテナでPHPからのメール送信とhttpsに対応する - Qiita https://qiita.com/kinoleaf/items/0b0002aa03993e58e2f0 ■XAMPPで利用 ※未検証 XAMPP にメールサーバ? それ MailHog でサクッとできるよ - てっきんの具。 https://www.tecking.org/archives/5717

Advertisement