作成開始 : 平成23年01月07日(金) 最終更新 : 平成23年01月08日(土)

WindowsでCGI, PHPからメール送信をしてみる。


Windows 上で稼動している WebサーバーでCGIやPHPのスクリプトからメールを送信することをやってみた。
sendmane.exe というフリーソフトを使って実現するものです。


1.sendまね〜る について

sendまね〜る は UNIX でいう sendmail互換の機能を持つメール送信プログラムです。
Windows 上で簡単にフォームとかからメール送信を実現することができます。

2.ソフトウェアのダウンロード

ダウンロード - XOOPSマニア からダウンロードする。 -> sendm100.zip (91.01KB)

 ↑
ちょっとわかりづらかったので・・・・
解凍すると下のように展開されます。

3.インストール

ダウンロード、解凍したフォルダを例えば C:\sendm とかに置きます。
Webコンテンツ内には置かないようにします。
次に、コマンドプロンプトから sendmane.exe を実行すると、以下のような初期設定が始まります。
設定した値は、sendmane.ini ファイルに格納されるので後で確認が可能です。
コマンド実行例

C:\sendm>sendmane

SMTPサーバのアドレス?
[]:
libretto.takaq.jp


SMTPポート番号?(通常は25)
[25]:


送信者のメールアドレス?
[]:
takaq@libretto.takaq.jp


送信者の名前?
[]:
takaq


SMTP認証の使用 Yes=1 No=0 ?
[0]:1


SMTP認証のユーザー名?
[]:user


SMTP認証のパスワード?
[]:password


POP before SMTPの使用 Yes=1 No=0 ?
[0]:


日本語文字コード変換の使用 Yes=1 No=0 ?
[0]:0


      
解説

SMTPサーバのアドレスは、プロバイダのSMTPサーバを設定する。
自宅サーバの場合には、メールサーバと sendmaneを同じホストで
実行するなら、127.0.0.1 に、異なるホストのときは、192.168.xx.xx
などメールサーバのプライベートIPアドレスを設定する。
名前解決できている場合はその名前を設定する。

SMTPポート番号は通常は 25番、サブミッションポートを使うなら、
587番にする。

送信者のメールアドレスは、メールサーバとの接続に使うアドレスで
あり、Envelope From と呼ばれ、MAIL FROMコマンドで使われる。
メールの Fromとは基本的に別物である。

送信者の名前は、-sfオプションでのみ使われる。

SMTP認証は PLAINと LOGINに対応し、CRAM-MD5には非対応
であるが、 OP25B下では SMTP認証ができないと動的IPからのメ
ール送信はできない。SMTP認証を使用するときは、ユーザ名とパ
スワードを設定する。

SMTP認証ではなく POP before SMTPのメールサーバのときは、
以下聞いてくるので設定する。

POP before SMTPの使用 Yes=1 No=0 ?
[0]:1
POP3サーバのアドレス?
[]:libretto.takaq.jp
POP3サーバのポート番号?(通常は110)
[110]:
POP3サーバのユーザー名?
[]:pop_user
POP3サーバのパスワード?
[]:pop_user_password
たくさんのオプション設定があります。検索サイトで「sendmane 設定」などと検索するとたくさんヒットします。
複数の使い方(たとえば、スクリプトごとに sendmane を使い分けたいとか)もできます。
その場合、sendmane.exeをコピーし、例えば、sendmane2.exe として初期設定をすれば、設定値は sendmane2.ini に記憶され、別の設定で使うことができます。
設定がおわったらテストしてみます。

アーカイブに送信テスト用のテキストファイルを同梱しています。(解凍したフォルダにある sendtest.txt です)
コマンドプロンプトより以下のように(type以降を)タイプします。

 C:\sendmane>type sendtest.txt | sendmane [あなたのメールアドレス]

 このメールが届けば、正常に動作しています。

4.スクリプトから sendmane を使う設定

[Perlの場合]

CGIによって異なりますが、以下は一般的(?)な例です。

$sendmail = '/usr/lib/sendmail';

$sendmail = 'C:\sendm\sendmane.exe';
あるいは、
$sendmail = 'C:/sendm/sendmane.exe';
のように書き換ます。

[PHPの場合]

 PHPで mb_send_mail や mail関数を使ってメール送信するとき、Windowsでは php.ini で SMTP, smtp_port, sendmail_from を設定するのが一般的です。
 しかし、以下のように UNIX用の sendmail_path を設定すれば Windowosでも動作します。
 sendmail_from と sendmail_path はいずれか一方をコメントにして使います。両者ともにコメントではないときは、sendmail_path の方が優先されるようです。

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

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

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = C:\sendm\sendmane.exe -t -i

他にも同様のプログラムがあるようですが、sendmane ほど機能は多くないとのことです。


サイトトップへ