Windows8ではXAMPPのsendmailが使えなかったから。
どうもゴジローです。
最近XAMPPを使いながらウェブサービスを構築する練習に励んでおります。
で、この前ぶち当たった壁というのが
PHPで『メールを送信する』機能を実現させるやつです。
まぁ、できる人にとっては何でもないことなのでしょうが、
いずれは通る道ということで頑張ったわけですよ。
そしていつものようにぐぐりながら進めていったら
php.iniファイルの設定を変更したあげく、
日本語に対応した mb_send_mail()関数を使えばできる、という情報にたどり着きました。
しかしメールは送信できず。。
xampp → sendmail → error.log から
エラーログを確認すると
『Connection Closed Gracefully.』 の文字がずらり・
調べてみると、よくわからないけどwindows8ではsendmailが使えないということでした。
XamppのsendmailはWindows8で動かない | 徒然
で、次の手段として
stunnelというソフトを導入すればいいとのことでしたので
Windows8にXAMPPを配置してgmailをsendmailで送信 - m_shige1979のささやかな抵抗と欲望の日々
stunnelをインストールした後、解凍し、起動!
※左上のアイコンが追加されました。
で、何なの?wて感じなのですが、その後どうすればいいか分からずww
自己満足してメールを送信しても届きませんでした。
で、最後に行き着いたのがgdmailというものでした。
これがよくわからないのですが、下のサイトを参考
php から確実にメール送信(Qdmail使用、SMTP経由) - Qiita
qdmailとqdsmtpを使うらしく、とりあえずインストールし、
phpファイルでrequire_onceしてみました。
参考サイトのソースコードをパクッて改造し、以下の感じに。
<?php //qdmailを使用したメール送信 //必要に応じてパスを記述 require_once 'qdsmtp.php'; require_once 'qdmail.php'; //ヒアドキュメントを使用 $mailBody = <<<EOT 本文本文本文本文本文本文 EOT; $mail = new Qdmail(); $mail -> errorDisplay(FALSE); $mail -> smtpObject() ->error_display = FALSE; $from = "○○○○○○@gmail.com"; //送信元 $to = "××××××@gmail.com"; //宛先 $mail->from($from,"ゴジロー"); //送信元名 $mail->to($to,"あなた"); //宛先名 $mail->subject("このメールはテストです。"); //件名 $mail->text($mailBody); //本文 //データやその他アカウント情報などを挿入 $param = array( "host" => "ssl://smtp.gmail.com", "port" => 465, "from" => "○○○○○○@gmail.com", "protocol" => "SMTP_AUTH", "user" => "○○○○○○@gmail.com", "pass" => "password", ); $mail -> smtp(TRUE); $mail -> smtpServer($param); $flag = $mail->send(); if($flag == TRUE){ print"送信成功"; }else{ print"送信失敗"; } ?>
結果
→送信成功
やったぁ(*´Д`)ww
※これはgmailを利用した方法です。
こんな感じに無事にメールを送信できました。
あくまでテストするためのコードですので、これをフォームと連携させて
機能の一部にしたいと思います。
では。