2010/11/21 | ||
PHPでGmailなどのPOP over ssl / SMTP over sslサーバーからメールを送受信する方法をまとめました。 | ||
CentOS5.5(Linux)、PHPで POP over ssl サーバー(Gmail)からメールを受信する方法。 | ||
まず、OSのPHPが"ssl"をサポートしているか確認する。 | ||
$ php -i | grep "Stream Socket" Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, sslv3, sslv2, tls |
||
上記の様に"ssl"を含んでいればOKです。 もし、"ssl"が含まれていなかった場合の対処は調べがついていません。ご存じの方が居られましたらご教授ください。 |
||
次に、"php-pear-Net-POP3"をインストールします。 CentOS5では、yumには含まれていません。RPMで供給されています。 |
||
$ wget http://yum.chrislea.com/centos/5/i386/php-pear-Net-POP3-1.3.6-4.noarch.rpm $ su # rpm -ivh php-pear-Net-POP3-1.3.6-4.noarch.rpm |
||
"php-pear-Net-POP3"でGmail(POP over ssl サーバー)からメールを受信するPHPスクリプトのサンプルです。 | ||
#!/usr/bin/php <?php //ライブラリ読み込み require_once "Net/POP3.php"; //デフォルトだと合っていない場合があるので、 //システムの日本語文字コードを明示的に設定する。 //これが合っていないと文字化けします。 mb_language("japanese"); mb_internal_encoding("UTF-8"); //接続設定 $host = "ssl://pop.gmail.com"; $port = "995"; $user = "Gmailuser"; $pass = "Gmailpassword"; //サーバーに接続 $pop = new Net_POP3(); $pop->connect($host, $port); $pop->login($user, $pass, "USER"); //メールに接続 $messages = $pop->getListing(); //メールを1通ずつ読み込む if($messages){ foreach($messages as $k => $row){ $id = $row["msg_id"]; $mail[] = $pop->getMsg($id); //1通ずつ配列に格納 } print_r($mail); //格納したメールを表示 } //サーバーとの接続を切断 $pop->disconnect(); ?> |
||
CentOS5.5(Linux)、PHPで SMTP over ssl サーバー(Gmail)からメールを送信する方法。 | ||
まず、"php-pear-Mail"をインストールする必要があります。 "php-pear-Mail"をインストールすれば、テキストメールの送信が可能になります。 |
||
# yum install php-pear-Mail | ||
"php-pear-Mail"でGmail(POP over ssl サーバー)からテキストメールを送信するPHPスクリプトのサンプルです。 | ||
#!/usr/bin/php <?php //ライブラリ読み込み require_once("Mail.php"); //システムの日本語文字コードを明示的に設定する。 //これが合っていないと文字化けします。 //デフォルトのままだと合っていない場合があります。 mb_language("japanese"); mb_internal_encoding("UTF-8"); //接続設定 define("SMTP_HOST", "smtp.gmail.com"); define("SMTP_PORT", "587"); define("SMTP_USER", "Gmailuser"); define("SMTP_PSWD", "Gmailpassword"); define("SMTP_FROM", "Gmailuser@gmail.com"); define("SMTP_DEBUG", true); //デバッグ用(true/false) //送信文作成 $to="xxxx@xxxxxx.ne.jp"; $from=SMTP_FROM; $subject="テキストメールを送る"; $body="本文"; //日本語をエンコード $body = mb_convert_encoding($body,"iso-2022-jp"); $subject=mb_encode_mimeheader(mb_convert_encoding($subject,"iso-2022-jp")); //SMTPサーバーに接続 $params = array( "host" => SMTP_HOST, "port" => SMTP_PORT, "auth" => true, "username" => SMTP_USER, "password" => SMTP_PSWD, "debug" => SMTP_DEBUG, ); $smtp = Mail::factory("smtp", $params); //メールヘッダーの生成 $headers = array( "To" => $to, "From" => $from, "Subject" => $subject, ); //送信 $return = $smtp->send($to,$headers,$body); if (PEAR::isError($return)){ echo("メール送信エラー:".$return->getMessage()); } ?> |
||
HTMLメールを送ったり、メールにファイルを添付したりするには、"php-pear-Mail-Mime"を使用する必要があります。 | ||
# yum install php-pear-Mail-Mime | ||
Gmail(POP over ssl サーバー)からHTMLメールを送信するPHPスクリプトのサンプルです。 | ||
#!/usr/bin/php <?php //ライブラリ読み込み require_once("Mail.php"); require_once("Mail/mime.php"); //システムの日本語文字コードを明示的に設定する。 //これが合っていないと文字化けします。 //デフォルトのままだと合っていない場合があります。 mb_language("japanese"); mb_internal_encoding("UTF-8"); //接続設定 define("SMTP_HOST", "smtp.gmail.com"); define("SMTP_PORT", "587"); define("SMTP_USER", "Gmailuser"); define("SMTP_PSWD", "Gmailpassword"); define("SMTP_FROM", "Gmailuser@gmail.com"); define("SMTP_DEBUG", true); //デバッグ用(true/false) //送信文作成 $to="xxxx@xxxxxx.ne.jp"; $from=SMTP_FROM; $subject="HTMLメールを送る"; $body=file_get_contents("hogehoge.html")); //送りたいHTMLファイルを本文にする //件名をエンコード $subject=mb_encode_mimeheader(mb_convert_encoding($subject,"iso-2022-jp")); //SMTPサーバーに接続 $params = array( "host" => SMTP_HOST, "port" => SMTP_PORT, "auth" => true, "username" => SMTP_USER, "password" => SMTP_PSWD, "debug" => SMTP_DEBUG, ); $smtp = Mail::factory("smtp", $params); //html本文処理 $mime = new Mail_Mime("\n"); $mime->setHTMLBody($body); $body_encode = array( "head_charset" => "ISO-2022-JP", "html_charset" => mb_internal_encoding(), ); $body = $mime->get($body_encode); //ヘッダー生成 $headers = array( "To" => $to, "From" => SMTP_FROM, "Subject" => $subject, ); $header = $mime->headers($headers); //送信実行 $ret = $smtp->send($to, $header, $body); if ( PEAR::isError($ret) ) { echo("メール送信エラー:".$ret->getMessage()."\n"); } ?> |
||
Gmail(POP over ssl サーバー)から添付ファイル付きメールを送信するPHPスクリプトのサンプルです。 | ||
#!/usr/bin/php <?php //ライブラリ読み込み require_once("Mail.php"); require_once("Mail/mime.php"); //システムの日本語文字コードを明示的に設定する。 //これが合っていないと文字化けします。 //デフォルトのままだと合っていない場合があります。 mb_language("japanese"); mb_internal_encoding("UTF-8"); //接続設定 define("SMTP_HOST", "smtp.gmail.com"); define("SMTP_PORT", "587"); define("SMTP_USER", "Gmailuser"); define("SMTP_PSWD", "Gmailpassword"); define("SMTP_FROM", "Gmailuser@gmail.com"); define("SMTP_DEBUG", true); //デバッグ用(true/false) //送信文作成 $to="xxxx@xxxxxx.ne.jp"; $from=SMTP_FROM; $subject="HTMLメールを送る"; $body="本文"; $attachfile="hogehoge.xxx"; //添付したいファイルを指定する //日本語のエンコード $body = mb_convert_encoding($body,"iso-2022-jp"); $subject=mb_encode_mimeheader(mb_convert_encoding($subject,"iso-2022-jp")); //SMTP接続 $params = array( "host" => SMTP_HOST, "port" => SMTP_PORT, "auth" => true, "username" => SMTP_USER, "password" => SMTP_PSWD, "debug" => SMTP_DEBUG, ); $smtp = Mail::factory("smtp", $params); //添付ファイル処理 $mime = new Mail_Mime("\n"); $mime->setTxtBody($body); $mime->addAttachment($attachfile,"application/octet-stream"); $body_encode = array( "head_charset" => "ISO-2022-JP", "text_charset" => "ISO-2022-JP" ); $body = $mime->get($body_encode); //ヘッダー生成 $headers = array( "To" => $to, "From" => SMTP_FROM, "Subject" => $subject, ); $header = $mime->headers($headers); //送信実行 $ret = $smtp->send($to, $header, $body); if ( PEAR::isError($ret) ) { echo("メール送信エラー:".$ret->getMessage()."\n"); } ?> |
||
|
||
CentOS5.5+PT2+epgrecで地デジ4ch同時録画サーバーを作る。 | ||
地デジ録画サーバーをメールで録画予約できる様にする。 |