ようこそゲストさん

QdmailReceiver Multibyte mail decoder & POP Client

QdmailReceiverとは

QdmailReceiverでできること

  • メールデコード(日本語OK)
  • 受信サーバー(POP)操作
PHPで、日本語での空メールや多機能転送メールを簡単に実現したり、POPメールボックス操作でWEBメールを実現できたりします。主にメールのMIMEデコード機能、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モードが使えない場合の代替手段

ダイレクトモード

メールデータ(ヘッダーも含めた全部)を渡すことで、ヘッダー部分を分割し、解析します。日本語も大丈夫です。
以下のような用途に使えるでしょう。
  • 複雑なメール転送
  • 他のソフトと組み合わせて、メールのデコード

# 開発は終わっていると思うのですが 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










#  非公開コメント   
  • TB-URL  http://hal456.net/qdmail_rec/01/tb/
  • qdmail_receiver.phpからメール発信時刻情報を取得できるように修正! プロジェクトJ でんきもの カフェ
    PHPのメール受信にqdmail_receiver.phpを利用しています 便利です 作者には感謝しております で、今回のプロジェクトに必要な情報にメール発信時刻があります 残念ながら、qdmail_receiver.phpにはありません う~ん ないなら...