▼ QdmailReceiverとは
■QdmailReceiverでできること
- メールデコード(日本語OK)
- 受信サーバー(POP)操作
Pear::Mail,Pear:MIMEなどで同様の機能は実現できますが、メールの仕組みを理解していないと難しいです。Qdmailシリーズは、「初心者には簡単に、上級者には詳細に」のポリシーのもと、簡単使用方法と、詳細使用方法の両方を使うことができます。
簡単にメールのデコードができるので、例えば、取得したメールをヘッダーと本文まるごとデータベースに保存しても、すぐに内容を取り出すことができます。
gmailのようなWEBサービスも比較的簡単に実現できるでしょう。
更新情報
■QdmailReceiverの特徴
- 統合部分
- 簡単関数タイプを用意
- ファイル一つで、STDIN , POP , 直接デコードの3つの機能を統合して使用可能
- デコード部分
- 日本語メールのデコード
- POP機能部分
- メールの取得、削除
- ヘッダーのみ取得する高速モードあり
- 特定ヘッダーのみの抜き出し機能
- UID取得機能
■3つのモード
スタンダードインプットモード(STDIN)
メールの受信サーバーから、パイプライン処理等で、PHPプログラムを直接起動し、STDIN経由でメールデータを受け渡しするモードです。受信サーバーの種類によって設定が異なります。
以下のような用途に使えるでしょう。
- 空メール
- spam排除サービス
- 転送メール
- WEBメールサービス
- メールによる各種メンバーサービス
POPモード
メールの受信サーバーにPOPプロトコルで接続し、溜まっているメールを取得します。以下のような用途に使えるでしょう。
- WEBメールサービス
- spam排除サービス
- STDINモードが使えない場合の代替手段
ダイレクトモード
メールデータ(ヘッダーも含めた全部)を渡すことで、ヘッダー部分を分割し、解析します。日本語も大丈夫です。以下のような用途に使えるでしょう。
- 複雑なメール転送
- 他のソフトと組み合わせて、メールのデコード
- TB-URL http://hal456.net/qdmail_rec/01/tb/
-
▼
qdmail_receiver.phpからメール発信時刻情報を取得できるように修正! プロジェクトJ
でんきもの カフェPHPのメール受信にqdmail_receiver.phpを利用しています 便利です 作者には感謝しております で、今回のプロジェクトに必要な情報にメール発信時刻があります 残念ながら、qdmail_receiver.phpにはありません う~ん ないなら...
# 開発は終わっていると思うのですが 2011年02月06日(日) 午後2時31分
[attach_flag] => 1
何が、デコメで使ってる画像で、何が、添付ファイルなのか、区別がつきません。。。
Content-Disposition: attachment;
をはんべつできるようにお願いいたしますうう
# ファイル名ある半角スペース 2011年03月03日(木) 午後5時14分
ファイル名に半角スペースが入っていると、filename、filename_safeともに半角スペースで途切れてしまいます。修正はしていただけないでしょうか?
# 自己解決 2011年03月10日(木) 午前10時16分
あっているかちょっと自身はないのですが
627行目の
if( $ret['attach_flag'] && (1===preg_match('/name\s*=\s*"?([^"\s\r\n]+)"?\r?\n?/is',$header['content-type'] , $matches ) ) ){
の正規表現から\sを外して
if( $ret['attach_flag'] && (1===preg_match('/name\s*=\s*"?([^"\r\n]+)"?\r?\n?/is',$header['content-type'] , $matches ) ) ){
としたら、半角スペースの入っているファイル名も正しく取れるようになりました。
# 転送メールに添付ファイルがついていると本文を取得できない 2012年12月12日(水) 午後1時15分
all()で取得できますが、
そのすべてのメールソースから本文のみを抽出するのは大変ですね。
どなたか簡単な取得法ありませんか?
# QdmailReceiverのPOP3受信エラー 2013年04月20日(土) 午後8時13分
Qdmail便利に使わせて頂いております。
Qdmailを使用してSMTP送信する機能の実装が完了し、無事に動作しておりますが、QdmailReceiverを使用して、メール受信をさせたいと考えており、QdmailReceiverを設置し試験用のコードを実行致しましたが以下のエラーメッセージが表示されてしまいます。
=== エラーメッセージ内容 ==========
Notice: Undefined offset: 0 in /home/sites/heteml/..../web/domain.jp/abc/abc-st/controllers/components/qdmail_receiver.php on line 1431
=== サンプルコード内容 ============
include( "common/inc_Include.php" );
$server = array(
'protocol'=>'pop3',
'host'=>'popserver',
'user'=>'name@domain.jp',
'pass'=>'pasooword',
);
$receiver = QdmailReceiver::start( 'pop' , $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();
=== サンプルコードここまで ========
ちなみにですが、念のためメールアカウントの接続先は、3ドメイン程テストしても同様のエラーが表示されました。
企業ドメインアカウント×2 と gmailアカウント です。
=== 動作環境 ======================
レンタルSvr: heteml
PHP: Version 5.2.17
となります。
アドバイス頂けますと幸いです。
nob