2010年1月27日水曜日
シビア過ぎる… - xamppでsendmail

いい加減、ローカルでもメールの送信テストが出来るようにと、xamppをあれこれいじってみる。

まずはphp.iniから。
バージョンによって場所が違うかもしれないので、パスは書かない。

[mail function]
という項目があるはず。
とりあえずは以下の項目を編集

[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

; For Win32 only.
;sendmail_from = me@example.com

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path = "インストールディレクトリ\sendmail\sendmail.exe -t"


SMTPとsmtp_portには、使用したいメールサーバの設定を記述する。
sendmail_fromはそのままにしておきました。どーせphpで送信する場合にはfromを設定するから。
でもって、sendmail_pathもコメントを外して、パスの確認。

[mail function]
; For Win32 only.
SMTP = smtp.xxxxx.co.jp
smtp_port = 25

; For Win32 only.
;sendmail_from = me@example.com

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = "インストールディレクトリ\sendmail\sendmail.exe -t"


続いてはsendmailの設定をしたいので、xamppをインストールしたディレクトリ直下にあるsendmailディレクトリのsendmail.iniを開く。

ここでも同じようにsmtp_serverとsmtp_portの設定を行う。php.iniの記述と合わせるのは当然のこと。
hostnameはとりあえずlocalhostのまま。
force_senderは変更してみた。意味があるかどうかは判らないけど。

デバッグログやエラーログが取りたい場合は、debug_logfile、error_logfileの項目のコメントを外して、有効にする。ファイル名だけだから、sendmailディレクトリに出来るんだろう。フルパスや相対パスを書くと変更できるのかな?

念の為、xamppでapacheの再起動(停止→起動)しておく。


で、いよいよテスト。

送信!


…届かない。

小一時間ほどあれこれ試してみましたが、よく判らない。
デバッグログを眺めていると…

10/01/27 10:16:54 ** Cc:
10/01/27 10:16:54 ** Bcc:Content-Type: text/plain; charset=ISO-2022-JP


あ!

改行コードが抜けとるがや!

phpのソースに
."\r\n".
を追加して再度実行してみると、無事に送信できました。

Content-typeの記述を追加した際に、改行コードを付け忘れたってだけか。

ううむ…
そんなヘッダでも送信できてたサーバのsendmailが大雑把なのか、xampp付属のsendmail.exeがシビアなのかどうか…

そもそも記述を間違える僕がいけないっつー話なんだけど。



0 コメント | コメントを書く
Template Design: © 2007 Envy Inc.