| 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同時録画サーバーを作る。 | ||
| 地デジ録画サーバーをメールで録画予約できる様にする。 | ||