【MAC/XAMPP】APACHEローカルサーバーでメール送信するまで

updated 2022-3-16

なんでXAMPPなのか

簡単にPHPサーバーを立てると言えばXAMPPMAMPが選択肢にあると思うのですが、MAMPはPROでないとSMTPを使うことができません
なのでXAMPPを使いました

メールサーバーを立てる

ローカルではなくサーバーをレンタルするとメールサーバーも一緒についている場合があると思いますが、ローカルでは自分で立てないといけないです

今回はlocalhost:1025をローカルのメールサーバーにしようと思います

dockerで立てる場合

まずイメージをダウンロードして

docker pull djfarrelly/maildev

コンテナを作成します

docker run -p 1080:80 -p 1025:25 djfarrelly/maildev

localhost:1025にメールを送り、localhost:1080をブラウザーで開くとメールボックスがみられます

コマンドラインで実行する場合

maildevmailhogなど色々あると思いますが、Dockerの方と合わせてmaildevで作成していきます

npm install -g maildev

これでmaildevで実行すれば、localhost:1025にメールを送り、localhost:1080をブラウザーで開くとメールボックスがみられます

XAMPPの設定

メールサーバーをlocalhost:1025に設定したので、php.iniを変更します

SMTP = localhost
smtp_port = 1025

Postfixの設定

MacはPostfixでlocalhostのメール管理ができるので、設定していきます
/etc/postfix/main.cfというファイルにメールサーバーの設定をします

...
#relayhost = [an.ip.add.ress]

relayhost=localhost:1025
smtp_use_tls=yes
smtp_tls_security_level=may
tls_random_source=dev:/dev/urandom

# REJECTING UNKNOWN RELAY USERS
...
項目
relayhostメールサーバー
tmtp_use_tls証明書ベースの認証と暗号化セッションを使得るようにする
smtp_tls_security_level証明書ベースの認証と暗号化セッションを使得るようにする
tls_random_source疑似乱数のための設定

PHPアプリからメールを送る

xamppDocument rootを設定します
xamppfilesで検索して出てきたフォルダの配下にetcフォルダがあるので開きます
etcの配下にhttpd.confというファイルがあるのでこれを編集していきます

DocumentRootを変更するので検索してもともとある1行をコメントアウトし、サーバーにしたいフォルダを設定します

DocumentRoot "/Users/user_name/xxx"

この状態でxamppをstartします
すでに実行している場合はrestartしてください

アプリを作る

先ほど設定したDocumentRootのディレクトリにindex.phpを作成します

<?php
    mail("[email protected]", "Title", "Hello World", "","-f [email protected]");
?>

アプリを開く

ブラウザでlocalhostを開くとメールが送信されlocalhost:1080を開くとメールが送信されたのが確認できます

参考

maildev
Postfix設定パラメータ