Loading ...

利用するPEARパッケージ紹介


この原稿は技術評論社発刊のWEB+DB Press Vol.18内特集2の「おいしさいっぱいのPHPライブラリ徹底活用! PEAR実践入門」用に書かれた原稿です. この原稿はのちに校正などで修正されている可能性や,現在の状態に則していない情報も含まれているかもしれませんが,ご了承ください.

まず今回利用するPEARパッケージの紹介の前に,先程インストールしたPEARを使いやすいようにヘッダファイルを一つ用意することにしましょう.

<?php
//  include_pathにローカルのPEARシステムを追加する
define( "_SYS_ROOT_DIR_", dirname( __FILE__)."/");
$include_path[] = _SYS_ROOT_DIR_."share/pear/";
ini_set( 'include_path', implode( ":", $include_path));
?>

筆者が用意したディレクトリ構成の場合,「common.inc.php」というファイル名で保存をすることにします. このファイルを予め読み込んでおくことで,あたかもシステムのPEARを扱ってるようにプログラミングをすることが可能になります. また,今後作成する共通部分もこのファイルに作成します.

これから今回利用するPEARパッケージを簡単に紹介します.

Net_POP3

POP3サーバへアクセスをするためのPEARパッケージです. 利用出来るクラスはNet_POP3で,サーバへの接続・メール一覧・メール取得など一通りの処理が可能です. 現状POP3/SSLには対応していないようです.

Net_POP3クラスの主なメソッド
メソッド名目的
Net_POP3コンストラクタ
connectPOP3サーバに接続する
disconnectPOP3サーバへの接続を切断する
getRawHeaders生のメールヘッダを取得する
getParsedHeaders解析済みのメールヘッダを取得する
getBodyメール本体を取得する
getSize現在のメールボックスの使用サイズを取得する
login認証を行う
numMsg現在のメールボックスのにあるメール数を取得する
deleteMsgメールの削除をする
getListingメールの一覧を取得する

Net_POP3クラスでの処理は大まかに書きの手順になります.

  • POP3サーバへの接続はconnect()・disconnect()メソッドで制御し,login()メソッドで認証を行う.
  • メールボックスについての情報はnumMsg()・getSize()メソッドで取得可能.
  • メール一覧の表示はgetListing()・getParsedHeaders()メソッドなどで可能.
  • メール表示はgetBody()メソッドで可能.

そしてNet_POP3は下記の手順でプログラミングします.

  1. オブジェクトのインスタンス.
  2. 接続手続き
  3. メール情報取得
  4. 切断手続き

下記が簡単なメール一覧表示の行い方です.

<?php
require_once 'common.inc.php';
require_once 'Net/POP3.php';
$apop = false; // APOPを利用する場合はtrueにします
$pop3 = new Net_POP3;
$pop3->connect( 'localhost', 110);
$pop3->login( 'popuser', 'poppass', $apop);
$mailNum = $pop3->numMsg() + 1; //  メール番号が1で開始するため
for ( $i = 1; $i <= $mailNum; $i++) {
  $headers = $pop3->getParsedHeaders( $i));
  // ヘッダ処理表示処理など
}
$pop3->disconnect();
?>

Net_POP3はそのままでは日本語をうまく扱えないので,後でいくつかのユーティリティ関数を用意します.

Mail

メールを送信するPEARパッケージです. 利用出来るクラスはMailになり,sendmailコマンド*1を利用した送信とPEAR:Net_SMTPパッケージを利用した送信処理をすることが可能になります.クラスMailで利用可能なメソッドは下記のようになります.

Mailクラスの主なメソッド
メソッド名目的
factory指定のドライバを用いるインスタンスの生成をする
sendメールの送信を行う

上記のようにMailパッケージは非常に簡単な設計になっており,送信手順は

  1. メール送信のドライバ(sendmail・Net_SMTP)を選択し,インスタンスする
  2. メールを送信する

の二つだけです.その為送信しようとするメールは予め作成しておくことになります. 下記はsmtpドライバ(Net_SMTP)を用いたメール送信の例です.

require_once 'common.inc.php';
require_once 'Mail.php';
$headers = array();
$headers[ 'Subject'] = 'This is test mail!!';
$headers[ 'From'] = 'fromuser@example.com';
$headers[ 'To'] = 'to@example.com';
$body = <<<EOD

Hi,
This mail test mail!!

EOD;
$recipients = $headers[ 'To'];

$params = array();
$params[ 'server'] = 'smtp@example.com';
$params[ 'port'] = 25;
$params[ 'auth'] = false;
$mailObject =& Mail::factory('smtp', $params);
$mailObject->send( $recipients, $headers, $body);

今回はsmtpドライバを用いたメール送信を利用しようと思います.

Mail_mimePart

添付つきメールを作成するPEARパッケージです. 利用できるクラスはMail_mimePartで,通常のテキストのみのメッセージから添付ファイルがあるメール,HTMLメールなどを作成することが可能です. 今回はこのパッケージでメール作成を行います.

Mail_mimePartの主なメソッド

メソッド名目的

Mail_mimeDecode

メールメッセージのデコード処理を行うPEARパッケージです. 利用出来るクラスはMail_mimeDecodeになり,添付ファイルがあるメールの解析を行うことが可能です.

Mail_mimeDecodeクラスの主なメソッド
メソッド名目的
Mail_mimeDecodeコンストラクタ
decodeMIMEメッセージのデコードを行う
uudecodeuuencodeされた添付をデコード処理する
getXMLMIMEパートをXML表記にする

また,クラスの利用には2種類の方法があります.

  • オブジェクトをインスタンスしてからデコード.
  • クラスメソッドを静的に呼び出し,デコードする.

下記がインスタンスをしない静的な呼び出しの簡単な使用法になります.

Mail_mimeDecodeの使用例
require_once 'common.inc.php';
require_once 'Net/POP3.php';
require_once 'Mail/mimeDecode.php';
$pop3 = new Net_POP3;
// 認証などを済ませる
$params['include_bodies'] = true;
$params['decode_bodies']  = true;
$params['decode_headers'] = true;
$params['input'] = $pop3->getMsg( $msg_id);
$mail = Mail_mimeDecode::decode( $params);

Mail_RFC822

RFC822*2に基づいたメールアドレスを解析するパッケージです. 利用出来るクラスはMail_RFC822で,一般的に非常に困難なメールヘッダに記載されているコメント付きのメールアドレスの解析がいとも簡単に解析をすることが可能になります.

Mail_RFC822クラスの主なメソッド
メソッド名目的
parseAddressListメールアドレスの解析を行う

クラスMail_RFC822のメソッドはparseAddressList()メソッドがひとつだけになり,下記がMail_RFC822の簡単な使用法になります.

Mail_RFC822の使用例
$to = "Tadashi Jokagi <jokagi@example.com>, webmaster of example.com <webmaster>";


*1 Windows環境の場合はsendmailコマンドを用いず,PHPが独自でSMTPサーバに接続します
*2 現在の最新版はRFC2822
リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
最終修正日時: Sun, 16 Nov 2003 23:29:01 JST (3110d)
文字数(HTML): 3983
文字数(Wiki): 4163
人気ブログランキング - よくきた wiki