2021-08-09
Mac OSのローカル開発環境にメール送信機能を実装する
Mac OSのローカル開発環境にメール送信機能を実装する方法を紹介します。
Macにはデフォルトでメール転送エージェント、Postfixが用意されています。設定を行い、ローカル開発環境にメール送信機能を実装しましょう。
PHPのsendmail関数を利用して、メールが送信できる状態に設定します。なお、メールの送信サーバはGmailを利用したいと思います。事前にGoogleアカウントの用意してください。
Postfixの設定ファイルを編集
$ sudo /etc/postfix/main.cf
Postfixの設定ファイルを管理者権限で開き、下記を追記します。
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes
tls_random_source=dev:/dev/urandom
記述内容のチェックを行ます。
エラーが出なければOK。
$ sudo postfix check
Gmail側SMTPの設定ファイルを作成
簡易認証セキュリティー層、SASL(Simple Authentication and Security Layer)という仕組みを使用します。各種プロトコルに、認証機能や、暗号化機能を提供するレイヤー。ちなみにSASLはササルと読むそうです。
postfixディレクトリにGmailのSMTP認証に必要なファイルを作成します。
作成、編集はsudoで実行。
$ sudo vim /etc/postfix/sasl_passwd
ここではsasl_passwd
というファイル名を指定していますが、任意で構いません。しかし、上記ファイルmain.cf
のsmtp_sasl_password_maps =
で指定したファイル名と同じである必要があります。
作成したファイルに認証情報を記述します。
[smtp.gmail.com]:587 {account}@gmail.com:{passwd}
{account}
にはGmailのアカウント名を記述。{passwd}
にはGmailのパスワードを記述してください。
ハッシュマップデータベースを作成します。
$ sudo postmap /etc/postfix/sasl_passwd
postfixディレクトリを確認すると、sasl_passwd.db
というファイルが作成されています。
登録が完了したらsasl_passwd
ファイルは削除してOK。
$ sudo rm -rf /etc/postfix/sasl_passwd
Gmailアカウントの設定
Gmailをメール送信に使用する場合は、別途Google側の設定が必要です。
経由でメールを送信する場合、上記で設定したGmailアカウントで安全性の低いアプリにアクセスし、「安全性の低いアプリの許可」を有効にしてください。有効にしないとGoogle側のセキュリティに引っ掛かり、メールを送信することができません。
動作確認
以下のスクリプトを記載したphpファイルをローカル開発環境に設置し、メールを送信できるか確認してください。
sendmail_test.php
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$to = 'to@example.com'; //送信先アドレス
$title = 'メール送信テスト';
$message = 'これはメールの送信テストです';
$headers = 'From: from@example.com'; //送信元アドレス
if (mb_send_mail($to, $title, $message, $headers)) {
echo "メール送信成功です";
} else {
echo "メール送信失敗です";
}
ターミナルからメール送信
スクリプトファイルをブラウザ上で実行しなくても、ターミナルからメール送信チェックができます。
mail -s {件名} {メールアドレス}
待機状態になるので、メール本文を入力し、最後に.(ピリオド)
を入力してエンターを押します。
まとめ
to@example.comを確認し、メールが届いていれば問題ありません。
ローカル開発環境でフォームの動作確認ができれば非常に便利ですね。