アホなエンジニアの日記

アホなエンジニアが戦った傷跡を残す日記です(*´Д`)

Windows8ではXAMPPのsendmailが使えなかったから。

f:id:gojiro:20151019104647j:plain

どうもゴジローです。

最近XAMPPを使いながらウェブサービスを構築する練習に励んでおります。

で、この前ぶち当たった壁というのが
PHP『メールを送信する』機能を実現させるやつです。

まぁ、できる人にとっては何でもないことなのでしょうが、
いずれは通る道ということで頑張ったわけですよ。

そしていつものようにぐぐりながら進めていったら
php.iniファイルの設定を変更したあげく、
日本語に対応した mb_send_mail()関数を使えばできる、という情報にたどり着きました。


しかしメールは送信できず。。

xampp → sendmailerror.log から
エラーログを確認すると
 
『Connection Closed Gracefully.』 の文字がずらり・

調べてみると、よくわからないけどwindows8ではsendmailが使えないということでした。
XamppのsendmailはWindows8で動かない | 徒然

で、次の手段として
stunnelというソフトを導入すればいいとのことでしたので
Windows8にXAMPPを配置してgmailをsendmailで送信 - m_shige1979のささやかな抵抗と欲望の日々

stunnelをインストールした後、解凍し、起動!
f:id:gojiro:20151019110342j:plain

※左上のアイコンが追加されました。

で、何なの?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を利用した方法です。

こんな感じに無事にメールを送信できました。
あくまでテストするためのコードですので、これをフォームと連携させて
機能の一部にしたいと思います。

では。