PHP : mb_send_mail を使用した自家用メール送信 API では、レンタルサーバー上利用する事を想定していましたが、fake sendmail for windows を使用すると、windows 上で同じ事ができます。 fake sendmail は、XAMPP に同梱されているらしい情報を多くインターネット上で得る事ができますが、何故か単独で Windows で利用する上では全く無名(日本)に近いソフトウェアのようです。 メールサーバは、フリーメールで可能で、簡単な設定で利用できます。以下のサンプルは、Gmail で動作確認しました。( 但し、Gmail では、Gmail 側で安全性の低いアプリの許可を『有効』にする必要があります ) ▼ 手順 ダウンロード 配布元より、sendmail.zip をダウンロードして、解凍します。 ( XAMPP には sendmail フォルダがあり、.php と .bat 以外が同梱されていると思います ) 【C:\tools\sendmail】sendmail.exe の動作テスト まず、sendmail.ini をエディタで開いて、四つのエントリを指定します ▼ Gmail の場合
smtp_server=smtp.gmail.com smtp_port=465 auth_username=ユーザ@gmail.com auth_password=パスワード▼ さくらインターネットの場合smtp_server=初期ドメイン smtp_port=587 auth_username=ユーザ@初期ドメイン auth_password=パスワード※ smtp_ssl=auto となっており、デフォルトで ssl で実行され、使え無い場合は TLS を使おうとします そして、作者のオリジナルのテスト方法ですが、send_test.bat を作成して以下のように記述します
@ECHO OFF REM send email from command line via SMTP with sendmail ECHO From: ユーザ@gmail.com > %TEMP%\temp.mail ECHO To: ユーザ@宛先ドメイン >> %TEMP%\temp.mail ECHO Subject: this is a test >> %TEMP%\temp.mail ECHO.>> %TEMP%\temp.mail ECHO testing. >> %TEMP%\temp.mail ECHO blah blah.. >> %TEMP%\temp.mail ECHO. >> %TEMP%\temp.mail ECHO blah. >> %TEMP%\temp.mail sendmail -t < %TEMP%\temp.mail REM DEL %TEMP%\temp.mail
これをコマンドプロンプトより実行して、メールが届く事を確認します。最後の行を REM でコメントにしているのは、送信で使われたテキストファイルを残す為です。sendmail.exe に -t が指定されているのは、標準入力より送信データを取得する為のもので、PHP で実行する場合特に必要はありませんでした。 temp.mail の内容From: ユーザ@gmail.com To: ユーザ@送り先ドメイン Subject: this is a test testing. blah blah.. blah.これは、コマンドプロンプトから実行できる事を意味しますが、PHP で使用するには、php.ini で以下のように指定するだけです。 php.ini の設定sendmail_path = "C:\tools\sendmail\sendmail.exe"実際の sendmail.exe のパスを "" で囲んで指定します。 ※ この場合、エラーログは "C:\tools\sendmail\error.log" です( デフォルト ) PHP のコード ( UTF8 BOM なしで記述します ) HTML の input 要素で type="text" name="fld_to"、name="fld_subject"、name="fld_body"、を form 要素の中に記述し、form 要素に method="post" action="以下の PHP のファイルのパス" を指定し、form 要素の中に input 要素で type="submit" を指定したボタンを記述します。
mb_language("Japanese"); mb_internal_encoding("UTF-8"); $from_header = "From: " . mb_encode_mimeheader( mb_convert_encoding("差出人","iso-2022-jp") ); $from_header .= " <{$GLOBALS["mail"]}>"; $result = mb_send_mail($_POST["fld_to"], $_POST["fld_subject"], $_POST["fld_body"], $from_header); if ( $result ) { $error = "OK"; } else { $error = "ERROR"; } print mb_language() . "
"; print $error;
$GLOBALS["mail"] は、メール形式であれば良いですが、通常ならば利用しているメールアドレスを記述します。 PHP の mb_send_mail の使用方法の全体のサンプルは、こちらを参照して下さい。 このページの PDF
|
【PHP + 通信の最新記事】
- PHP の cURL でファイルアップロード
- PHP : WEB でもコマンドラインでも HTTP でファイルをダウンロードする 『fget.php』
- PHP : cURL : Google Photo API の albums.list メソッドを使用して アルバム一覧データを取得する
- PHP + cURL で Google Photo API の アクセストークンを取得する
- PHP : cURL で FTP + SSL ダウンロード
- PHP の imap 関数で( Windows ローカル )、Yahoo メールのメールをさくらインターネットのメールへコピーする
- PHP の imap 関数( Windows のローカル )で、さくらインターネットのメールボックスの情報を取得する
- PHP : IMAP 関数 でまずメールのヘッダ部分を整理してログに出力する / ※ JSON 出力を追加
- ファイルを一つアップロード : FORM の target を IFRAME にして、PHP に JavaScript を書き出させて元のページにメッセージを表示させる
- Windows PHP(Pear)で、Gmail(SSL/465)を使ってメールを送る
- Pear の Net_POP3 で、SSL(995) を使って簡単にメール受信
- PHP をコマンドプロンプトから実行して、WEB 上のデータを取得するいくつかの方法
- FormData を使用して $.ajax で送信すると、ファイルのアップロードとメール送信(ファイル添付)を一度に行えます
- ファイルのアップロードからそれを添付してメールを送るテンプレート(スケルトン)
- PHP : mb_send_mail を使用した自家用メール送信 API
- PHP で Windows標準のオブジェクト(CDO.Message)とGMail を使ってメール送信
- PHP : http 経由でファイルのサイズを取得する file_size 関数と ファイルサイズを付加した get_imagesize 関数
- 連想配列のキー部分がプロパティと一致したらセットする( メール送信用クラス )
- PHP : リモートのファイルサイズを取得する
- ローカルの PHP を使ってコマンドプロンプトより簡単にバイナリファイルをアップロードする