検索条件
全15件
(2/3ページ)
#!/usr/local/php-5.2.6/bin/php-cgi -q
<?php
include_once('qdmail_receiver.php');
qd_receive_mail( 'stdin' );
?>
サーバーによって#!/usr/local/php-5.2.6/bin/php-cgi -qの部分は変更する必要があるでしょう。
#!/usr/bin/phpで、うまくいくことが多いとは思います*1。
qd_receive_mail( 'stdin' );と宣言すれば、後は他のモードの使い方と同じです。
QdmailReceiver::start( 'stdin' );として下さい。
qd_receive_mail( 'stdin' , 'utf-8' ); または QdmailReceiver::start( 'stdin' , 'utf-8' );
メールが到着したら、リアルタイムで処理するメール到着をきっかけに、何らかのプログラムを走らせるわけですね。
The MIT License http://www.opensource.org/licenses/mit-license.php改変、再配布、商用利用は自由に行えます。ライセンスに基づく限り、無料であり、貴方はどこにもお金を支払う必要はありません*1。
| 名称 | 特徴 | QdmailReceiverでの別名 |
| メール番号 | POPセッション毎に1から付け直し | pointer番号 |
| UID番号 | POPサーバー内では一意に保たれる(セッション超えてOK) | popuid |
$server = array(
'protocol'=>'pop3',
'host'=>'pop.example.com',
'user'=>'userID',
'pass'=>'password',
);
qd_receive_mail( 'start' , $server );
$max = qd_receive_mail( 'count' );
echo "<pre>";
for($i = 1 ; $i <= $max ; $i++){
echo 'Mail Number: '.qd_receive_mail( 'pointer' ).' subject: ';
echo qd_receive_mail( 'header' , array('subject','name') );
echo "\r\n";
qd_receive_mail( 'next' );
}
echo "</pre>";
die();
本文を取得するつもりがないのであれば、ヘッダのみ取得するようにするには次の文を'start'の次に挿入します。これで本文を受信サーバーから取得しないので若干高速になります。qd_receive_mail( 'popHigh' , 0 );
qd_receive_mail( 'start' , $server );
qd_receive_mail( 'popHigh' , 0 );
$max = qd_receive_mail( 'count' );
$target = array();
for($i = 1 ; $i <= $max ; $i++){
$subject = qd_receive_mail( 'header' , array('subject','name') );
if( false !== mb_strpos( $subject , '未承諾広告' ) ){
$target[] = qd_receive_mail( 'pointer' );
}
qd_receive_mail( 'next' );
}
foreach( $target as $del_id ){
qd_receive_mail( 'delete' , $del_id );
}
qd_receive_mail( 'done' );
この例では、いったん$target変数に、該当のメール番号を溜めて、後でまとめて削除しています。$receiver->header( array( 'from' , 'name' ) );
$receiver->header( array('from','mail') );
$receiver->header( array('from') ) ;
または
$receiver->header( 'from' );
でも可能
配列形式で、fromヘッダーから解析された情報が返されます。メールヘッダーの「名称」は、すべて「小文字」で指定してください。 Subjectは×。subjectは○です。
$receiver->header( array('subject','name') );
$receiver->header( array('subject') );
または
$receiver->header( 'subject' );
でも可能
ヘッダー情報を全部配列で取得$receiver->header( 'ALL' );
$receiver->bodyAutoSelect();これで、htmlメールの場合は、html部分を取得し、テキストメールの場合は、テキスト部分を取得します。
$receiver->text();この形式は、テキスト部分を取得します。htmlメールであっても、代替テキストを取得します。
$receiver->html();テキストメールの場合は、nullとなります。
$attach = $receiver->attach();以下の形で、添付ファイルの配列が$attachに格納されます。
(例)
array(
0 => array(
'value' => '添付ファイルの中身(デコード済みのバイナリ)',
'finename' => 'ファイル名(日本語デコード済み)',
'finename_safe' => 'urlencode済みのファイル名',
'content-type' => 'image/jpg',
'enc' => 'base64',
),
1 => array(
'value' => '添付ファイルの中身(デコード済みのバイナリ)',
'finename' => 'ファイル名(日本語デコード済み)',
'finename_safe' => 'urlencode済みのファイル名',
'content-type' => 'image/jpg',
'enc' => 'base64',
'content-id' => '........',
),
);
'finename'は、マルチバイト(日本語)のファイル名にデコード済みですので、そのままwindowsなどで、そのファイル名で保存しようとすると不都合がでる場合もあります。その場合は、ご自分でsjisにエンコードしてからお使いください。
$attach = $receiver->attach();
foreach($attach as $att){
$fp=fopen($att['filename_safe'],'w');
fputs($fp,$att['value']);
fclose($fp);
}