xampp環境にて、sendmailでメールを送る | 【初心者・学生】プログラマ、オキャの技術ブログ【大歓迎】

xampp環境にて、sendmailでメールを送る

ちょっと気になったので、サンプルを作成。
設定情報コミコミ。とりあえずyahooのメールを利用。

環境は「xampp 1.7.3」。


まずはphp側。
簡単に、「mb_send_mail」を使う。


if (mb_send_mail("okya_planing@yahoo.co.jp", "subject", "test文です。",
"From: okya_planing@yahoo.co.jp"))
{
print "送信ok";
}
else
{
print "送信ng";
}




次に、xamppの設定。

ここでは、「php.ini」と「sendmail.ini」を編集する。

まずはphp.ini。
パスは、xampp/php/php.ini。


[mail function]
; For Win32 only.
; http://php.net/smtp
;SMTP = localhost
; http://php.net/smtp-port
;smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = postmaster@localhost

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "\"C:\server\xampplite\sendmail\sendmail.exe\" -t"


sendmail_pathのみ有効にして、それ以外はコメントアウト。


次に、sendmail.ini。
パスは、xampp/sendmail/sendmail.ini。
調べていると、どうやらsendmail.ini内の記述方法は、xampp1.7.3から変わったみたい。
これより前のバージョンは「smtp_server=smtp.mail.yahoo.co.jp」とかって書くらしい。


account yahoo
host smtp.mail.yahoo.co.jp
port 587
from okya_planing@yahoo.co.jp
auth plain
user okya_planing
password *************

# Set a default account
account default : yahoo


【account】から【password】までを新しく追加する。
【user】と【password】は、yahooメールのログインidとパスワード。
【account default】は、デフォルトでMercuryだが、yahoo(【account】で書いた文字)に変更する。


設定が終われば、xamppコンパネから、Apacheの再起動。



yahooの場合、これだけだとエラーが出るので、from側のメールアドレスで以下の設定が必要です。

1.ログイン
2.メールオプションをクリック
3.POPアクセスとメール転送をクリック
4.サービスを「ブラウザアクセスとPOPアクセス」に変更する
5.設定を保存する


これをしておかないと、エラーでずっとメールが送信できません。
(apache内エラーログ)

sendmail.exe: authentication failed (method PLAIN)
sendmail.exe: server message:535 authorization failed (#5.7.0)
sendmail.exe: could not send mail (account default from C:\xamp\sendmail\sendmail.ini)


(sendmail内エラーログ)

10 20 00:00:00 host=smtp.mail.yahoo.co.jp tls=off auth=on user=okya_planing from=okya_planing@yahoo.co.jp recipoents=okya_planing@yahoo.co.jp smtpstatus=535 smtpmsg='535 authorization failed (#5.7.0)' errormsg='authoentication failed method PLAIN)' exitcode=EX_NOPERM





追記:QA

Q1.php.iniのmail functionの設定を自分の使ってるプロバイダ設定にする方法ってなに?
A1.mail functionでは、メールの設定をします。お使いのプロバイダを送信者とする場合、プロバイダのsmtpを経由するので、自分の使ってるプロバイダの情報を設定するだけでいける場合があります。

Q2.php.iniのsendmail_pathのコメントアウトを外してsendmailを使う方法ってなに?
A2.sendmail_pathは、sendmail.exeを実行するコマンドです。xamppでのsendmail.exeは、sendmai.iniの設定内容を実行するだけの経由プログラムなので、php.ini内以外の設定で実行することが可能となります。
 この際、ごちゃごちゃするのはあれなので、php.ini内のportなどはコメントアウトします。

Q3.xamppについているMercuryを使って送信するとは?
A3.Mercuryはメールサーバです。自前でメールサーバを立て、自分のメールサーバ経由でする場合は、pgp.iniやsendmail.iniの設定以外に、Mercuryの設定も別途必要です。