底辺過ぎてちょっとビビる

26歳からIT業界にいるエンジニアが、まったく成長できてないことを確認するブログ。備忘録的に使いたいとも考えています。

【XAMPP】メール送信に失敗する【mb_send_mail】

XAMPP環境でメール送信を実行するアプリケーションを作成してみた。

 

現在の参考書籍はこれです。読み物としても面白い...

Head First PHP & MySQL ―頭とからだで覚えるWebアプリケーション開発の基本

Head First PHP & MySQL ―頭とからだで覚えるWebアプリケーション開発の基本

 

 

そもそも、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アカウントでログインし、下記のページを開きます。

https://myaccount.google.com/lesssecureapps

そして、「安全性の低いアプリの許可」を有効に変更しておく。

 

④送信テスト用のコードを書く

<?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の以下の箇所へのタイポ(いわゆるタイプミス・誤植)が原因だった...

smtp_server=smtp.gmail.com ←ここをなにか別の文字列で設定していた

 

 

しょうもないタイポで何度も色んなサイトで原因を探ってしまい、無駄な時間を消費してしまったというエントリーでした。

 

PHP5徹底攻略 エキスパート編

PHP5徹底攻略 エキスパート編

 
PHP5徹底攻略

PHP5徹底攻略

 
初めてのPHP5

初めてのPHP5

 
WordPress プラグイン&WebAPI 活用ガイドブック [Version 3.x対応]

WordPress プラグイン&WebAPI 活用ガイドブック [Version 3.x対応]

 
基礎からのMySQL 改訂版 基礎からシリーズ

基礎からのMySQL 改訂版 基礎からシリーズ