【 メールの送信 】

1. Windows 環境の mb_send_mail
2. SMTP サーバ

  • 日本語のメール送信は、マルチバイト文字列関数が利用可能でなければなりません。これは、php.ini で
    extension=php_mbstring.dll とする事で有効となります

  • PHP でのメール送信は、マルチバイト文字列関数の mb_send_mail を使用する事によって、subject での
    内部エンコーディング → JIS → base64 といったエンコードを自動的に行なってくれます

  • もちろん、本文の JIS 変換も行なわれます。但し、SHIFT_JIS のデータを扱う場合いくつかの注意事項が
    あります
  • <?
    	mb_language( "ja" );
    	mb_internal_encoding("EUC-JP");
    	$send = mb_convert_encoding( "表示", mb_internal_encoding(), "SJIS" );
    	mb_send_mail("lightbox@nifty.com", $send, $send );
    ?>
    
  • PHP のマニュアルには、php.ini の設定例がいくつかありますが、正しく動く事はありませんでした。また、
    仮に正しく動いたとしても自動的に行なうエンコーディング処理と言うのはプログラミングするほうから言
    えば、それは非常に不安なものです。
  • 内部エンコーディングのみ設定する
  • mb_send_mail の日本語エンコーディングは、内部エンコーディングに基
    づいています。

  • ですから、少なくともその設定は、php.ini または、関数で行なわなけれ
    ばなりません
  •  
    mbstring.language = Japanese
    mbstring.internal_encoding = EUC-JP
     
    	または
     
    mb_language( "ja" );
    mb_internal_encoding("EUC-JP");
    


  • その上で、使用する日本語 ( SHIFT_JIS ) を、EUC_JP に変換して mb_send_mail に渡します


  • php.ini
  • Windows では、メール送信を行なう為に以下の2つのディレクティブがあります

  • SMTP
  • smtp_port


  • ※ smtp_port は、PHP 4.3.0以降でのみ利 用可能です。


  • 実際のメール送信を行なうのは、PHP では無く SMTP サーバです。デフォルトは localhost であり、この状
    態では、SMTP サーバがインストールされていなければメールを送る事はできません

  • SMTP ディレクティブに、プロバイダの IP アドレスを設定してもかまいませんが、テストするには不向きであり、
    プロバイダの制限が色々存在します

  • そこで、フリーのローカル専用の SMTP サーバを使ってテストするのが良いでしょう。
    ( http://seclan.dll.jp/ に melon と言う良いフリーソフトがあります。なにも設定せずに実行するだけで
    テストできます )