【XAMPP】メール送信に失敗する【mb_send_mail】
XAMPP環境でメール送信を実行するアプリケーションを作成してみた。
現在の参考書籍はこれです。読み物としても面白い...
Head First PHP & MySQL ―頭とからだで覚えるWebアプリケーション開発の基本
- 作者: Lynn Beighley,Michael Morrison,佐藤嘉一
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/03/26
- メディア: 大型本
- 購入: 2人 クリック: 62回
- この商品を含むブログ (12件) を見る
そもそも、XAMPP環境(というかPHPで)メール送信をするにはどんな事が必要か?というのをまとめようと思ったけれども、検索すれば死ぬほど出てくるしわざわざ改めて書き出すのも無駄な気がしてきたので、リンク先の力をお借りすることにする。
今回、メールはGmailを利用することにする。他のメール(例えばYahooメールなど)の場合はiniファイルの設定値を同じように変更するだけなので、調べれば出てくるはず。
①php.iniを以下のように編集(元になるiniファイルはバックアップをとっておく)
[mail function] ; 下記の設定はそのままでよい。 SMTP=localhost smtp_port=25 ; sendmail_path を下記の値にする。 ; sendmail_path の項目が存在しなければ、 ; [mail function] の章内に作成する。 sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
②sendmailフォルダ直下のsendmail.iniを以下のように編集
(同様にバックアップをとっておく)
; 下記の値にする smtp_server=smtp.gmail.com smtp_port=587 auth_username=(Googleのメールアドレス) auth_password=(Googleのパスワード)
③また、「セキュリティ」の問題でメールがブロックされることを阻止するため、以下のようにアカウントの設定を変更しておく。
メール送信に使いたいGoogleアカウントでログインし、下記のページを開きます。
そして、「安全性の低いアプリの許可」を有効に変更しておく。
④送信テスト用のコードを書く
<?php
$from = '(送信元のメールアドレス)';
$to = '(送信先のメールアドレス)';
$subject = '件名: テスト送信';
$message = <<< EOF
{$from}より。こんにちは。
これはテスト送信です。
EOF;if (mb_send_mail($to, $subject, $message, "From: {$from}")) {
echo '送信成功。';
} else {
echo '送信失敗。<br>エラーログを確認してください。 (xampp\sendmail\error.log)';
}
⑤これでローカル環境でメール送信するための準備が整ったので、あとはコードを実行すればメールが送信されるはず。
⑥ここで自分の場合、PHPを実行すると以下のようなエラーログが吐かれていた。
18/09/30 22:59:00 : Socket Error # 11001<EOL>Host not found.
調べても何もわからなかったので、非常に困ったがsendmail.iniの以下の箇所へのタイポ(いわゆるタイプミス・誤植)が原因だった...
しょうもないタイポで何度も色んなサイトで原因を探ってしまい、無駄な時間を消費してしまったというエントリーでした。
- 作者: David Sklar,桑村潤,廣川類
- 出版社/メーカー: オライリージャパン
- 発売日: 2005/10/27
- メディア: 単行本
- 購入: 6人 クリック: 54回
- この商品を含むブログ (41件) を見る
WordPress プラグイン&WebAPI 活用ガイドブック [Version 3.x対応]
- 作者: 星野邦敏,西川伸一
- 出版社/メーカー: 翔泳社
- 発売日: 2013/10/30
- メディア: Kindle版
- この商品を含むブログを見る