<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
<channel>
	<title>QdmailReceiver Multibyte mail decoder & POP Client</title>
	<link>http://hal456.net/qdmail_rec/</link>
	<language>ja</language>
	<description>日本語メールの解析とStdin,POP受信機能を備えたPHPライブラリ</description>
	<copyright>Copyright 2008</copyright>
	<pubDate>Tue, 11 Nov 2008 05:07:26 GMT</pubDate>
	<lastBuildDate>Tue, 11 Nov 2008 05:07:26 GMT</lastBuildDate>
	<generator>http://adiary.abk.nu/#1.44</generator>
	<docs>http://blogs.law.harvard.edu/tech/rss</docs> 
	<item>
		<title> 2008-09-15</title>
		<link>http://hal456.net/qdmail_rec/032</link>
		<guid>http://hal456.net/qdmail_rec/032</guid>
		<category>更新情報</category>
		<pubDate>Mon, 15 Sep 2008 03:02:14 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
<a href="http://hal456.net/qdmail_rec/download" class="tag adiary-key" title="記事指定 ">ダウンロードはこちら QdmailReceiver</a><br>
<ul>
	<li>0.1.4a</li>
</ul>
<blockquote>
multipart/aliternative 等のつなぎパートが添付ファイルとして認識されてしまうバグを修正。<br>
<br>
添付ファイルを返す配列のcontent-idヘッダ情報の配列キーが、content_idだったのをcontent-idに修正<br>
<br>
返り値にcontent-id_essenceを追加。content-idの&lt; &gt;を省いたもの<br>
</blockquote>

</div>

<hr>
<h4><a href="/qdmail_rec/032#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/032#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title> 2008-09-14</title>
		<link>http://hal456.net/qdmail_rec/030</link>
		<guid>http://hal456.net/qdmail_rec/030</guid>
		<category>更新情報</category>
		<pubDate>Sun, 14 Sep 2008 23:51:39 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
<a href="http://hal456.net/qdmail_rec/download" class="tag adiary-key" title="記事指定 ">ダウンロードはこちら QdmailReceiver</a><br>
<ul>
	<li>0.1.3a</li>
</ul>
<blockquote>
ヘッダー取得前にメール本文を取得しようとすると、うまくいかないバグ修正。<br>
version()メソッド追加<br>
</blockquote>

</div>

<hr>
<h4><a href="/qdmail_rec/030#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/030#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>出力文字コード</title>
		<link>http://hal456.net/qdmail_rec/charset</link>
		<guid>http://hal456.net/qdmail_rec/charset</guid>
		<category>未分類</category>
		<pubDate>Sun, 14 Sep 2008 02:44:10 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
QdmailReceiverは、返り値のマルチバイトコードについては、mb_internal_encoding()に指定された文字コードに変換して返します。<br>
<br>
したがって、適切にmb_internal_encoding()の文字コードの設定がなされていなければなりません。<br>
<br>
<br>
特に、返り値の文字コードを別に指定したい場合は、charset()メソッドを使用してください。<br>
<h4><a href="http://hal456.net/qdmail_rec/charset#p0.1" name="p0.1" class="linkall"><span class="sanchor"></span>carset() 返り値の文字コード指定 OOP型</a></h4>
<br>
<pre>
$receiver-&gt;carset( 'EUC-JP' );
</pre>

</div>

<hr>
<h4><a href="/qdmail_rec/charset#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/charset#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title> 2008-09-11</title>
		<link>http://hal456.net/qdmail_rec/029</link>
		<guid>http://hal456.net/qdmail_rec/029</guid>
		<category>更新情報</category>
		<pubDate>Thu, 11 Sep 2008 13:32:32 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
<a href="http://hal456.net/qdmail_rec/download" class="tag adiary-key" title="記事指定 ">ダウンロードはこちら QdmailReceiver</a><br>
<ul>
	<li>0.1.2a</li>
</ul>
<blockquote>
メール本文がカラの時に、添付ファイルが重複してデコードされるバグを修正<br>
</blockquote>

</div>

<hr>
<h4><a href="/qdmail_rec/029#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/029#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>QdmailReceiverとは</title>
		<link>http://hal456.net/qdmail_rec/top</link>
		<guid>http://hal456.net/qdmail_rec/top</guid>
		<category>未分類</category>
		<pubDate>Mon, 12 May 2008 11:00:48 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
<a href="http://hal456.net/">hal456トップページ</a><br>
</div>

<div class="section">
<h3><a href="http://hal456.net/qdmail_rec/top#p1" name="p1"><span class="sanchor">■</span></a>QdmailReceiverでできること</h3>
<ul>
	<li>メールデコード(日本語OK)</li>
	<li>受信サーバー(POP)操作</li>
</ul>
PHPで、日本語での空メールや多機能転送メールを簡単に実現したり、POPメールボックス操作でWEBメールを実現できたりします。主にメールのMIMEデコード機能、POP操作機能から成り立っています。その他、様々な用途が考えられるでしょう。<br>
Pear::Mail,Pear:MIMEなどで同様の機能は実現できますが、メールの仕組みを理解していないと難しいです。Qdmailシリーズは、「初心者には簡単に、上級者には詳細に」のポリシーのもと、簡単使用方法と、詳細使用方法の両方を使うことができます。<br>
簡単にメールのデコードができるので、例えば、取得したメールをヘッダーと本文まるごとデータベースに保存しても、すぐに内容を取り出すことができます。<br>
gmailのようなWEBサービスも比較的簡単に実現できるでしょう。<br>
<br>
<a href="http://hal456.net/qdmail_rec/&category?cat=%e6%9b%b4%e6%96%b0%e6%83%85%e5%a0%b1">更新情報</a><br>
</div>

<div class="section">
<h3><a href="http://hal456.net/qdmail_rec/top#p2" name="p2"><span class="sanchor">■</span></a>QdmailReceiverの特徴</h3>
<ul>
	<li>統合部分
	<ul>
		<li>簡単関数タイプを用意</li>
		<li>ファイル一つで、STDIN , POP , 直接デコードの3つの機能を統合して使用可能</li>
	</ul>
	</li>
</ul>
<ul>
	<li>デコード部分
	<ul>
		<li>日本語メールのデコード</li>
	</ul>
	</li>
</ul>
<ul>
	<li>POP機能部分
	<ul>
		<li>メールの取得、削除</li>
		<li>ヘッダーのみ取得する高速モードあり</li>
		<li>特定ヘッダーのみの抜き出し機能</li>
		<li>UID取得機能</li>
	</ul>
	</li>
</ul>
</div>

<div class="section">
<h3><a href="http://hal456.net/qdmail_rec/top#p3" name="p3"><span class="sanchor">■</span></a>3つのモード</h3>
<h4><a href="http://hal456.net/qdmail_rec/top#p3.1" name="p3.1" class="linkall"><span class="sanchor"></span>スタンダードインプットモード(STDIN)</a></h4>
メールの受信サーバーから、パイプライン処理等で、PHPプログラムを直接起動し、STDIN経由でメールデータを受け渡しするモードです。<br>
受信サーバーの種類によって設定が異なります。<br>
以下のような用途に使えるでしょう。<br>
<ul>
	<li>空メール</li>
	<li>spam排除サービス</li>
	<li>転送メール</li>
	<li>WEBメールサービス</li>
	<li>メールによる各種メンバーサービス</li>
</ul>
<h4><a href="http://hal456.net/qdmail_rec/top#p3.2" name="p3.2" class="linkall"><span class="sanchor"></span>POPモード</a></h4>
メールの受信サーバーにPOPプロトコルで接続し、溜まっているメールを取得します。<br>
以下のような用途に使えるでしょう。<br>
<ul>
	<li>WEBメールサービス</li>
	<li>spam排除サービス</li>
	<li>STDINモードが使えない場合の代替手段</li>
</ul>
<h4><a href="http://hal456.net/qdmail_rec/top#p3.3" name="p3.3" class="linkall"><span class="sanchor"></span>ダイレクトモード</a></h4>
メールデータ（ヘッダーも含めた全部）を渡すことで、ヘッダー部分を分割し、解析します。日本語も大丈夫です。<br>
以下のような用途に使えるでしょう。<br>
<ul>
	<li>複雑なメール転送</li>
	<li>他のソフトと組み合わせて、メールのデコード</li>
</ul>

</div>

<hr>
<h4><a href="/qdmail_rec/top#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/top#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>POP特有の処理(OOPタイプ)</title>
		<link>http://hal456.net/qdmail_rec/pop_only2</link>
		<guid>http://hal456.net/qdmail_rec/pop_only2</guid>
		<category>未分類</category>
		<pubDate>Sat, 17 May 2008 12:17:56 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
<a href="http://hal456.net/qdmail_rec/03" class="tag adiary-key" title="記事指定 ">初期設定</a>は必ず行ってください。<br>
<br>
OOPでいける方はそれなりにPHPに習熟した方と思いますので、例題の解説として進めます。<br>
$receiver には、初期化されたQdmailReceiverオブジェクトが代入されているものとします。<br>
ご自分の（安全な）受信サーバー(POPサーバー)を初期設定し以下を実行してみてください。<br>
当然ですが、POPサーバーにメールが残っていなければなりません。テストする場合はあまりたくさんのメールが残っていると時間がかかりますので、数通にしておきましょう。<br>
<pre>
echo  "&lt;pre&gt;";
for($i = 1 ; $i &lt;= $receiver-&gt;count() ; $i++)&#123;

    echo "Mail number: ".$receiver-&gt;pointer()."\r\n";
    echo htmlspecialchars(
        print_r(
           $receiver-&gt;header( array('subject','name') , 'none' )
        ,true)
    ,ENT_NOQUOTES);

    echo "\r\n";
    $receiver-&gt;next();
}

echo "&lt;/pre&gt;";
</pre>
メール件名一覧が表示されましたか？<br>
順番に解説していきます。<br>
<pre>
$receiver-&gt;count()
</pre>
で、POPサーバーに残っているメールの件数を取得します。<br>
未読・既読の管理はPOPの機能ではできません（そもそもPOPプロトコルは未読・既読を行いません）<br>
<pre>
$receiver-&gt;pointer()
</pre>
現在、どの順番のメールを読んでいるかを取得します。<br>
この順番（pointer)はセッション毎（プロセス毎）に変わります。これをプロセスを超えて共有して使用すると意図しない結果となる場合がありますので、注意してください。<br>
プロセスを超えて、メールを特定したい場合は、POP-UID機能を使ってください。<br>
<pre>
$receiver-&gt;header( array('subject','name') , 'none' )
</pre>
いよいよ本題です。これで、件名を取得しています。<br>
一般的には<br>
<pre>
$receiver-&gt;header( 取得するヘッダー名 , 存在しない場合の返り値（省略可） )
</pre>
と書きます。<br>
どのような配列で内部格納されているか知りたい方は、上記のコードを以下に修正して、表示させてみてください。<br>
<pre>
     $receiver-&gt;header( 'subject' , 'none' )
</pre>
これで、subjectに関するデコードデータを配列の形で入手することができます。<br>
<br>
同様にして、<br>
<pre>
     $receiver-&gt;header( 'from' , 'none' )
</pre>
<pre>
     $receiver-&gt;header( array('from',0,'name') , 'none' )
</pre>
なども試してみましょう。<br>
<pre>
注意！
ヘッダー名は、すべて小文字で指定してください。
</pre>
ループの最後はカレントポインタの移動です。<br>
<pre>
 $receiver-&gt;next();
</pre>
これで、次のメールへと処理をうつします。現在のメール情報は消去されます。（QdmaiReceiverの内部的に消去されるだけであって、POPサーバーからは削除されません）<br>

</div>

<hr>
<h4><a href="/qdmail_rec/pop_only2#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/pop_only2#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>POP特有の処理(一般関数タイプ)</title>
		<link>http://hal456.net/qdmail_rec/pop_only</link>
		<guid>http://hal456.net/qdmail_rec/pop_only</guid>
		<category>未分類</category>
		<pubDate>Sat, 17 May 2008 12:12:22 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
<a href="http://hal456.net/qdmail_rec/02" class="tag adiary-key" title="記事指定 ">POP初期化の処理</a>を前提とします。初期化（サーバー情報の設定）を行わないと、POPでメールを受信サーバーから取得することはできません。<br>
今後、受信サーバーのことをPOPサーバーと記載します（この場合は同じものを示しています）。<br>
<h4><a href="http://hal456.net/qdmail_rec/pop_only#p0.1" name="p0.1" class="linkall"><span class="sanchor"></span>メール件数の取得</a></h4>
<pre>
echo qd_receive_mail( 'count' );
</pre>
これで、ＰＯＰサーバーに溜まっているメールの件数を取得します。<br>
<h4><a href="http://hal456.net/qdmail_rec/pop_only#p0.2" name="p0.2" class="linkall"><span class="sanchor"></span>次のメールを処理する</a></h4>
何も指定しなければ、受信サーバーに溜まった最初のメールだけを処理します。<br>
それ以降のメールの処理をするには、次のようにします。<br>
<pre>
qd_receive_mail( 'next' );
</pre>

</div>

<hr>
<h4><a href="/qdmail_rec/pop_only#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/pop_only#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>Directモード</title>
		<link>http://hal456.net/qdmail_rec/Direct%e3%83%a2%e3%83%bc%e3%83%89</link>
		<guid>http://hal456.net/qdmail_rec/Direct%e3%83%a2%e3%83%bc%e3%83%89</guid>
		<category>未分類</category>
		<pubDate>Sat, 17 May 2008 11:53:28 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
Directモードは、引数にメール全文を与えることで、そのメールを解析するモードです。<br>
一番ベーシックな働きをします。<br>
POPモードやSTDINモードも、このDirectモードを呼び出して使っています。<br>
<h4><a href="http://hal456.net/qdmail_rec/Direct%e3%83%a2%e3%83%bc%e3%83%89#p0.1" name="p0.1" class="linkall"><span class="sanchor"></span>使い方（一般関数タイプ）</a></h4>
<pre>
qd_receive_mail( 'direct' , 'メールデータ全文' );
</pre>
メールデータ全文は、本文だけなく、ヘッダーも含めた全文である必要があります。<br>
SMTPに準拠した形式を受け付けます。<br>
<br>
<h4><a href="http://hal456.net/qdmail_rec/Direct%e3%83%a2%e3%83%bc%e3%83%89#p0.2" name="p0.2" class="linkall"><span class="sanchor"></span>使い方（OOPタイプ）</a></h4>
<pre>
QdmailReceiver::start( 'direct' , 'メールデータ全文' );
</pre>
あとは<a href="http://hal456.net/qdmail_rec/howto" class="tag adiary-key" title="記事指定 ">共通の使い方</a>と同じです。<br>

</div>

<hr>
<h4><a href="/qdmail_rec/Direct%e3%83%a2%e3%83%bc%e3%83%89#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/Direct%e3%83%a2%e3%83%bc%e3%83%89#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>モード共通の使用方法</title>
		<link>http://hal456.net/qdmail_rec/howto</link>
		<guid>http://hal456.net/qdmail_rec/howto</guid>
		<category>未分類</category>
		<pubDate>Sat, 17 May 2008 11:49:42 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
QdmailReceiverは、２通りの使用方法があります。<br>
<h4><a href="http://hal456.net/qdmail_rec/howto#p0.1" name="p0.1" class="linkall"><span class="sanchor"></span>一般関数タイプの初期設定</a></h4>
<pre>
qd_receive_mail( モード　,　パラメータ　, 文字コード );
</pre>
<h5>stdinモードの例</h5>
<pre>
qd_receive_mail( 'stdin' );
</pre>
<h4><a href="http://hal456.net/qdmail_rec/howto#p0.2" name="p0.2" class="linkall"><span class="sanchor"></span>OOPタイプの初期設定</a></h4>
<pre>
$receiver = QdmailReceiver::start( モード , パラメータ , 文字コード );
</pre>
<h5>stdinモードの例</h5>
<pre>
$receiver = QdmailReceiver::start( 'stdin' );
</pre>

</div>

<hr>
<h4><a href="/qdmail_rec/howto#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/howto#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>STDINモード</title>
		<link>http://hal456.net/qdmail_rec/stdin_base</link>
		<guid>http://hal456.net/qdmail_rec/stdin_base</guid>
		<category>未分類</category>
		<pubDate>Sat, 17 May 2008 11:45:40 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
<h3><a href="http://hal456.net/qdmail_rec/stdin_base#p1" name="p1"><span class="sanchor">■</span></a>STDINモードとは</h3>
メールの受信サーバーから、パイプライン処理等で、PHPプログラムを直接起動し、標準入力(STDIN)経由でメールデータを受け渡しするモードです。<br>
受信サーバーの種類によって設定が異なります。<br>
</div>

<div class="section">
<h3><a href="http://hal456.net/qdmail_rec/stdin_base#p2" name="p2"><span class="sanchor">■</span></a>使い方（一般関数タイプ）</h3>
標準入力から、メールの全文を入手するタイプですので、他のプログラムの標準出力をパイプにて受け渡しする必要があります。<br>
また、受け取った側のPHPプログラムは、多くの場合、1行目に、動作元となるPHP本体プログラムを指定する必要があるでしょう。<br>
指定は、ファイルの最初に #! と綴り、そのすぐ後からPHP本体へのパスを記述します。<br>
下記の例は、さくらインターネットの場合です。-qは、quietモードであり、httpヘッダーを出力しない設定です。<br>
<pre>
#!/usr/local/php-5.2.6/bin/php-cgi -q
&lt;?php

include_once('qdmail_receiver.php');

qd_receive_mail( 'stdin' );

?&gt;
</pre>
サーバーによって<br>
<pre>
#!/usr/local/php-5.2.6/bin/php-cgi -q
</pre>
の部分は変更する必要があるでしょう。<br>
<br>
よくわからない場合は、<br>
<pre>
#!/usr/bin/php
</pre>
で、うまくいくことが多いとは思います<span class="footnote"><a title="保証の限りでない" href="http://hal456.net/qdmail_rec/stdin_base#fn1" name="n1">*1</a></span>。<br>
<pre>
qd_receive_mail( 'stdin' );
</pre>
と宣言すれば、後は他のモードの使い方と同じです。<br>
<h4><a href="http://hal456.net/qdmail_rec/stdin_base#p2.1" name="p2.1" class="linkall"><span class="sanchor"></span>使い方(OOPタイプ)</a></h4>
qd_receive_mail( 'stdin' );<br>
の代わりに<br>
<pre>
QdmailReceiver::start( 'stdin' );
</pre>
として下さい。<br>
<h4><a href="http://hal456.net/qdmail_rec/stdin_base#p2.2" name="p2.2" class="linkall"><span class="sanchor"></span>文字コードについて</a></h4>
QdmailReceiverは、すべての出力を、内部エンコーディングに変換して返します。<br>
特定の文字コードにしたい場合は、以下のようにしてください。<br>
utf-8で出力する場合の例）<br>
<pre>
qd_receive_mail( 'stdin' , 'utf-8' );
または
QdmailReceiver::start( 'stdin' , 'utf-8' );
</pre>
</div>
<div class="footnote">
	<p class="footnote"><a href="http://hal456.net/qdmail_rec/stdin_base#n1" name="fn1">*1</a> : 保証の限りでない</p>
</div>

<div class="section">
<h3><a href="http://hal456.net/qdmail_rec/stdin_base#p3" name="p3"><span class="sanchor">■</span></a>応用</h3>
Qdmailはメール受信サーバーを操作することができますが、次のようなことはどうでしょうか。<br>
<blockquote>
メールが到着したら、リアルタイムで処理する<br>
</blockquote>
メール到着をきっかけに、何らかのプログラムを走らせるわけですね。<br>
これはPOPサーバーに定期的にアクセスするプログラムでは実現できません。<br>
せいぜい、cron<span class="footnote"><a title="unix系の定期実行デーモン" href="http://hal456.net/qdmail_rec/stdin_base#fn2" name="n2">*2</a></span>で、数分おきに実行させるのがやっとでしょう。<br>
<br>
しかし、sendmail,qmail,PostFixなどのメールサーバーとQdmailReceiverを組み合わせることで実現することができます。<br>
これが実現できれば、以下のようなサービスが簡単に提供できるでしょう。<br>
<ul>
	<li>空メールによる簡単会員登録</li>
	<li>ブログへのメール投稿</li>
	<li>メール転送プログラム</li>
	<li>簡易メーリングリスト</li>
	<li>リアルタイムSpamフィルター</li>
	<li>WEBメール</li>
</ul>

</div>
<div class="footnote">
	<p class="footnote"><a href="http://hal456.net/qdmail_rec/stdin_base#n2" name="fn2">*2</a> : unix系の定期実行デーモン</p>
</div>

<hr>
<h4><a href="/qdmail_rec/stdin_base#c">■コメント（13件） - 古いコメントが省略されています</a></h4>
<div style="margin-left: 1em;">
SAMU『 お世話になります。 すみません、何度もお手数をおかけ致します。  $body = $receiver-&gt;all();  とし、...』(2008/11/10 13:46)</span><br>
spok『 ようやくなさっていることがわかりました。  おそらく、本文解析の部分でPHPがエラーを出しているため、このバウンスメールが返っ...』(2008/11/10 24:13)</span><br>
SAMU『 お世話になります、 何度もすみませんでした。  頂きましたサイトを参考に　cat でエラーを はき出させたところ、下記がでまし...』(2008/11/10 26:49)</span><br>
spok『ご連絡ありがとうございました。 今後の更新時には、このエラー回避を組み込みたいと思います。』(2008/11/11 7:54)</span><br>
SAMU『こちらこそありがとうございました。 またVerUPの際には差し替えて活用させて頂きたいとおもいますので、 どうぞよろしくお願い致...』(2008/11/11 14:07)</span><br>
</div>
<h4><a href="/qdmail_rec/stdin_base#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>ダウンロード</title>
		<link>http://hal456.net/qdmail_rec/download</link>
		<guid>http://hal456.net/qdmail_rec/download</guid>
		<category>未分類</category>
		<pubDate>Mon, 12 May 2008 12:15:36 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
<h3><a href="http://hal456.net/qdmail_rec/download#p1" name="p1"><span class="sanchor">■</span></a> version</h3>
アルファー版ですが、それなりに使えるかと思っています。<br>
ご意見、ご不満、動作報告などしていたけると励みになります。<br>
</div>

<div class="section">
<h3><a href="http://hal456.net/qdmail_rec/download#p2" name="p2"><span class="sanchor">■</span></a>ファイルの置き場所</h3>
includeできる場所であれば、どこでも構いません。<br>
ファイル1つ構成ですので、バージョンアップも上書きするだけです。<br>
</div>

<div class="section">
<h3><a href="http://hal456.net/qdmail_rec/download#p3" name="p3"><span class="sanchor">■</span></a>最新版</h3>
2008-09-15 <a href="http://hal456.net/public/image/qdmail_rec/200805/0.1.4.alpha.zip" title="ファイル" class="tag file">0.1.4.alpha.zip</a> <br>
<br>
<a href="http://hal456.net/qdmail_rec/&category?cat=%e6%9b%b4%e6%96%b0%e6%83%85%e5%a0%b1">更新履歴</a><br>
<h5>以前のバージョン</h5>
2008-09-14 <a href="http://hal456.net/public/image/qdmail_rec/200805/0.1.3.alpha.zip" title="ファイル" class="tag file">0.1.3.alpha.zip</a><br>
2008-09-11 <a href="http://hal456.net/public/image/qdmail_rec/200805/0.1.2.alpha.zip" title="ファイル" class="tag file">0.1.2.alpha.zip</a><br>
2008-06-01 <a href="http://hal456.net/public/image/qdmail_rec/200805/0.1.1.alpha.zip" title="ファイル" class="tag file">0.1.1.alpha.zip</a><br>
2008-05-17 <a href="http://hal456.net/public/image/qdmail_rec/200805/0.1.0.alpha.zip" title="ファイル" class="tag file">0.1.0.alpha.zip</a><br>
</div>

<div class="section">
<h3><a href="http://hal456.net/qdmail_rec/download#p4" name="p4"><span class="sanchor">■</span></a>ライセンス(License)</h3>
このPHPプログラム　Qdmail　はオープンソースであり、The MIT Licenseでライセンスされています。<br>
<blockquote>
The MIT License <a href="http://www.opensource.org/licenses/mit-license.php">http://www.opensource.org/licenses/mit-license.php</a><br>
</blockquote>
改変、再配布、商用利用は自由に行えます。ライセンスに基づく限り、無料であり、貴方はどこにもお金を支払う必要はありません<span class="footnote"><a title="くれるというならいただきます" href="http://hal456.net/qdmail_rec/download#fn1" name="n1">*1</a></span>。<br>
詳しくは、上記ＵＲＬをご覧下さい。<br>
(以前はもっと制約の多いAGPLv3でしたが、より緩いMIT Liceseに変更しました。)<br>
<br>
このライセンスに守るのが難しい方は、作者に連絡をとってください。<br>
連絡先は、このサイトのサイドバーにメールアドレスに記載してあります。私は多くのスパムメールを受け取っているので、必ず、E-mailの"subject"には"Qdmail"の言葉を入れて下さい。<br>
<br>
作者は、操作に関する質問はメールでは受け付けていません。質問のある方はこのサイトの適当な記事にコメントをつけることで行って下さい。ただし、作者の都合により、その質問には回答が寄せられないことがあります。<br>

</div>
<div class="footnote">
	<p class="footnote"><a href="http://hal456.net/qdmail_rec/download#n1" name="fn1">*1</a> : くれるというならいただきます</p>
</div>

<hr>
<h4><a href="/qdmail_rec/download#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/download#tb">■トラックバック（3件）</a></h4>
<div style="margin-left: 1em;">
<a href="http://hal456.net/qdmail_rec/029" rel="nofollow"> 2008-09-11</a> （QdmailReceiver Multibyte mail decoder & POP Client） by spok<br>
<a href="http://hal456.net/qdmail_rec/030" rel="nofollow"> 2008-09-14</a> （QdmailReceiver Multibyte mail decoder & POP Client） by spok<br>
<a href="http://hal456.net/qdmail_rec/032" rel="nofollow"> 2008-09-15</a> （QdmailReceiver Multibyte mail decoder & POP Client） by spok<br>
</div>
]]></description>
	</item>
	<item>
		<title>更新履歴</title>
		<link>http://hal456.net/qdmail_rec/history</link>
		<guid>http://hal456.net/qdmail_rec/history</guid>
		<category>更新情報</category>
		<pubDate>Mon, 12 May 2008 11:19:19 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
2008-06-01 0.1.aalfa ライセンスをMITライセンスに変更。<br>
2008-05-17 0.1.0alfa 公開<br>

</div>

<hr>
<h4><a href="/qdmail_rec/history#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/history#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>メール番号とUID番号</title>
		<link>http://hal456.net/qdmail_rec/pointer_uid</link>
		<guid>http://hal456.net/qdmail_rec/pointer_uid</guid>
		<category>未分類</category>
		<pubDate>Mon, 12 May 2008 11:04:48 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
POPプロトコルでは、メールを特定するのに、２つの番号があります。<br>
<table>
<tbody>
	<tr class="odd"><td>名称</td><td>特徴</td><td>QdmailReceiverでの別名</td></tr>
	<tr class="even"><td>メール番号</td><td>POPセッション毎に1から付け直し</td><td>pointer番号</td></tr>
	<tr class="odd"><td>UID番号</td><td>POPサーバー内では一意に保たれる（セッション超えてＯＫ）</td><td>popuid</td></tr>
</tbody></table>
UID番号の方が一意に保たれるので、たいへん便利なのです。しかし、POPでは、受信サーバーに溜まっているメールを特定するのには、メール番号を使うことになっています。<br>
<br>
したがって、UIDとメール番号の変換を行うには、以下のコマンドを使用してください。<br>

</div>

<hr>
<h4><a href="/qdmail_rec/pointer_uid#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/pointer_uid#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>サンプルコード</title>
		<link>http://hal456.net/qdmail_rec/sample1</link>
		<guid>http://hal456.net/qdmail_rec/sample1</guid>
		<category>未分類</category>
		<pubDate>Sat, 17 May 2008 12:39:32 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
受信サーバーに溜まっている件名をすべて表示する。<br>
<pre>
 $server = array(
    'protocol'=&gt;'pop3',
    'host'=&gt;'pop.example.com',
    'user'=&gt;'userID',
    'pass'=&gt;'password',
 );

qd_receive_mail( 'start' , $server ); 
$max = qd_receive_mail( 'count' );
echo "&lt;pre&gt;";
for($i = 1 ; $i &lt;= $max ; $i++)&#123;
    echo 'Mail Number: '.qd_receive_mail( 'pointer' ).' subject: ';
    echo qd_receive_mail( 'header' , array('subject','name') );
    echo "\r\n";
    qd_receive_mail( 'next' );
}
echo "&lt;/pre&gt;";
die();
</pre>
本文を取得するつもりがないのであれば、ヘッダのみ取得するようにするには次の文を'start'の次に挿入します。これで本文を受信サーバーから取得しないので若干高速になります。<br>
<pre>
qd_receive_mail( 'popHigh' , 0 ); 
</pre>
<h4><a href="http://hal456.net/qdmail_rec/sample1#p0.1" name="p0.1" class="linkall"><span class="sanchor"></span>タイトルに「未承諾広告」があるメールをサーバーから削除する</a></h4>
<pre>
qd_receive_mail( 'start' , $server ); 
qd_receive_mail( 'popHigh' , 0 ); 
$max = qd_receive_mail( 'count' );
$target = array();
for($i = 1 ; $i &lt;= $max ; $i++)&#123;
    $subject = qd_receive_mail( 'header' , array('subject','name') );
    if( false !== mb_strpos( $subject , '未承諾広告' ) )&#123;
        $target[] = qd_receive_mail( 'pointer' );
    }
    qd_receive_mail( 'next' );
}
foreach( $target as $del_id )&#123;
    qd_receive_mail( 'delete' , $del_id );
}
    qd_receive_mail( 'done' );
</pre>
この例では、いったん$target変数に、該当のメール番号を溜めて、後でまとめて削除しています。<br>
このようにしなくても、最初のif文の部分で、deleteしても大丈夫ですが、必ず最後にdoneコマンドを実行することを忘れないようにしてください。<br>

</div>

<hr>
<h4><a href="/qdmail_rec/sample1#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/sample1#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>基本タイプ（ＯＯＰタイプ）</title>
		<link>http://hal456.net/qdmail_rec/oop_base</link>
		<guid>http://hal456.net/qdmail_rec/oop_base</guid>
		<category>未分類</category>
		<pubDate>Mon, 12 May 2008 11:08:38 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
<h4><a href="http://hal456.net/qdmail_rec/oop_base#p0.1" name="p0.1" class="linkall"><span class="sanchor"></span>メールヘッダーの取得</a></h4>
<h5>メール差出人の名前部分</h5>
$receiver には、<a href="http://hal456.net/qdmail_rec/howto" class="tag adiary-key" title="記事指定 ">初期設定</a>または<a href="http://hal456.net/qdmail_rec/pop_init" class="tag adiary-key" title="記事指定 ">POPモード初期設定</a>にて設定した、QdmailReceiverオブジェクトが入っているものとします。<br>
<pre>
$receiver-&gt;header( array( 'from' , 'name' ) );
</pre>
<h5>メール差出人のメールアドレス</h5>
<pre>
$receiver-&gt;header( array('from','mail') );
</pre>
<h5>メール差出人関係の情報を一括取得</h5>
<pre>
$receiver-&gt;header( array('from') ) ;
または
$receiver-&gt;header( 'from' );
でも可能
</pre>
配列形式で、fromヘッダーから解析された情報が返されます。<br>
<br>
他のヘッダーについても、同様に取り出すことができます。<br>
<ul>
	<li>注意点！</li>
</ul>
<pre>
メールヘッダーの「名称」は、すべて「小文字」で指定してください。
Subjectは×。subjectは○です。
</pre>
<h5>メール件名</h5>
<pre>
$receiver-&gt;header( array('subject','name') );
</pre>
<h5>メール件名関係の情報を一括取得</h5>
<pre>
$receiver-&gt;header( array('subject') );
または
$receiver-&gt;header( 'subject' );
でも可能
</pre>
ヘッダー情報を全部配列で取得<br>
<pre>
$receiver-&gt;header( 'ALL' );
</pre>
<h4><a href="http://hal456.net/qdmail_rec/oop_base#p0.2" name="p0.2" class="linkall"><span class="sanchor"></span>メール本文の取得</a></h4>
<pre>
$receiver-&gt;bodyAutoSelect();
</pre>
これで、htmlメールの場合は、html部分を取得し、テキストメールの場合は、テキスト部分を取得します。<br>
テキスト部分は以下の形でも取得できます。<br>
<pre>
$receiver-&gt;text();
</pre>
この形式は、テキスト部分を取得します。htmlメールであっても、代替テキストを取得します。<br>
代替テキストがないhtmlメールの場合は、nullとなります。<br>
<br>
html部分の取得。<br>
<pre>
$receiver-&gt;html();
</pre>
テキストメールの場合は、nullとなります。<br>
一般的には'bodyAutoSelect'コマンドを使用したほうがいいでしょう。<br>
<h4><a href="http://hal456.net/qdmail_rec/oop_base#p0.3" name="p0.3" class="linkall"><span class="sanchor"></span>添付ファイルの取得</a></h4>
<pre>
$attach = $receiver-&gt;attach();
</pre>
以下の形で、添付ファイルの配列が$attachに格納されます。<br>
<pre>
（例）
array(
    0 =&gt; array(
         'value' =&gt; '添付ファイルの中身（デコード済みのバイナリ）',
         'finename' =&gt; 'ファイル名（日本語デコード済み）',
         'finename_safe' =&gt; 'urlencode済みのファイル名',
         'content-type' =&gt; 'image/jpg',
         'enc' =&gt; 'base64',
        ),
    1 =&gt; array(
         'value' =&gt; '添付ファイルの中身（デコード済みのバイナリ）',
         'finename' =&gt; 'ファイル名（日本語デコード済み）',
         'finename_safe' =&gt; 'urlencode済みのファイル名',
         'content-type' =&gt; 'image/jpg',
         'enc' =&gt; 'base64',
         'content-id' =&gt; '........',
    ),
);
</pre>
'finename'は、マルチバイト（日本語）のファイル名にデコード済みですので、そのままwindowsなどで、そのファイル名で保存しようとすると不都合がでる場合もあります。その場合は、ご自分でsjisにエンコードしてからお使いください。<br>
（もちろん、元のファイル名がアルファベットファイル名であれば、特段の問題はでないと思います。）<br>
'finename_safe'は、ファイル名をurlencodeしていますので、このままファイル名として保存しても、大丈夫なようにしています(windows,unix,linux)。<br>
<br>
添付ファイルを保存するサンプルコード<br>
<pre>
$attach = $receiver-&gt;attach();
foreach($attach as $att)&#123;
    $fp=fopen($att['filename_safe'],'w');
    fputs($fp,$att['value']);
    fclose($fp);
}
</pre>

</div>

<hr>
<h4><a href="/qdmail_rec/oop_base#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/oop_base#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>一般関数タイプ</title>
		<link>http://hal456.net/qdmail_rec/function_base</link>
		<guid>http://hal456.net/qdmail_rec/function_base</guid>
		<category>未分類</category>
		<pubDate>Mon, 12 May 2008 11:07:55 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
<h4><a href="http://hal456.net/qdmail_rec/function_base#p0.1" name="p0.1" class="linkall"><span class="sanchor"></span>メールヘッダーの取得</a></h4>
<h5>メール差出人の名前部分</h5>
<pre>
echo qd_receive_mail( 'header' , array('from','name') );
</pre>
<h5>メール差出人のメールアドレス</h5>
<pre>
echo qd_receive_mail( 'header' , array('from','mail') );
</pre>
<h5>メール差出人関係の情報を一括取得</h5>
<pre>
$from = qd_receive_mail( 'header' , array('from') ) ;
または
$from = qd_receive_mail( 'header' , 'from' );
でも可能
</pre>
$from には、配列形式で、fromヘッダーから解析された情報が代入されます。<br>
<br>
他のヘッダーについても、同様に取り出すことができます。<br>
<ul>
	<li>注意点！</li>
</ul>
<pre>
メールヘッダーの「名称」は、すべて「小文字」で指定してください。
Subjectは×。subjectは○です。
</pre>
<h5>メール件名</h5>
<pre>
$subject = qd_receive_mail( 'header' , array('subject','name') );
</pre>
<h5>メール件名関係の情報を一括取得</h5>
<pre>
$subject = qd_receive_mail( 'header' , array('subject') );
または
$subject = qd_receive_mail( 'header' , 'subject' );
でも可能
</pre>
ヘッダー情報を全部配列で取得<br>
<pre>
$header = qd_receive_mail( 'header' , 'ALL' );
</pre>
<h4><a href="http://hal456.net/qdmail_rec/function_base#p0.2" name="p0.2" class="linkall"><span class="sanchor"></span>メール本文の取得</a></h4>
<pre>
$body = qd_receive_mail( 'body' );
</pre>
これで、htmlメールの場合は、html部分を取得し、テキストメールの場合は、テキスト部分を取得します。<br>
テキスト部分は以下の形でも取得できます。<br>
<pre>
$body = qd_receive_mail( 'text' );
</pre>
この形式は、テキスト部分を取得します。htmlメールであっても、代替テキストを取得します。<br>
代替テキストがないhtmlメールの場合は、nullとなります。<br>
<br>
html部分の取得。<br>
<pre>
$body = qd_receive_mail( 'html' );
</pre>
テキストメールの場合は、nullとなります。<br>
一般的には'body'コマンドを使用したほうがいいでしょう。<br>
<h4><a href="http://hal456.net/qdmail_rec/function_base#p0.3" name="p0.3" class="linkall"><span class="sanchor"></span>添付ファイルの取得</a></h4>
<pre>
$attach = qd_receive_mail( 'attach' );
</pre>
以下の形で、添付ファイルの配列が$attachに格納されます。<br>
<pre>
（例）
array(
    0 =&gt; array(
         'value' =&gt; '添付ファイルの中身（デコード済みのバイナリ）',
         'finename' =&gt; 'ファイル名（日本語デコード済み）',
         'finename_safe' =&gt; 'urlencode済みのファイル名',
         'content-type' =&gt; 'image/jpg',
         'enc' =&gt; 'base64',
        ),
    1 =&gt; array(
         'value' =&gt; '添付ファイルの中身（デコード済みのバイナリ）',
         'finename' =&gt; 'ファイル名（日本語デコード済み）',
         'finename_safe' =&gt; 'urlencode済みのファイル名',
         'content-type' =&gt; 'image/jpg',
         'enc' =&gt; 'base64',
         'content-id' =&gt; '........',
    ),
);
</pre>
'finename'は、マルチバイト（日本語）のファイル名にデコード済みですので、そのままwindowsなどで、そのファイル名で保存しようとすると不都合がでる場合もあります。その場合は、ご自分でsjisにエンコードしてからお使いください。<br>
（もちろん、元のファイル名がアルファベットファイル名であれば、特段の問題はでないと思います。）<br>
'finename_safe'は、ファイル名をurlencodeしていますので、このままファイル名として保存しても、大丈夫なようにしています(windows,unix,linux)。<br>
<br>
添付ファイルを保存するサンプルコード<br>
<pre>
$attach = qd_receive_mail( 'attach' );
foreach($attach as $att)&#123;
    $fp=fopen($att['filename_safe'],'w');
    fputs($fp,$att['value']);
    fclose($fp);
}
</pre>

</div>

<hr>
<h4><a href="/qdmail_rec/function_base#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/function_base#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>ヘッダー情報の説明</title>
		<link>http://hal456.net/qdmail_rec/header</link>
		<guid>http://hal456.net/qdmail_rec/header</guid>
		<category>未分類</category>
		<pubDate>Mon, 12 May 2008 11:06:33 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
ヘッダー情報は、以下のような形で内部保存されています。<br>
<pre>
$this-&gt;header = array(
    'ヘッダー名（e.g Cc）'=&gt;array(
        0 =&gt; array(
             'mail' =&gt; 'mail_0@example.com',
             'name' =&gt; 'お名前0',
             'mime' =&gt; '=?iso2022-jp?B?......?=',
        ),
        1 =&gt; array(
             'mail' =&gt; 'mail_1@example.com',
             'name' =&gt; 'お名前1',
             'mime' =&gt; '=?iso2022-jp?B?......?=',
        ),

    'ヘッダー名(e.g. subject)'=&gt;array(
          'name' =&gt; '件名',
          'mime' =&gt; '=?iso2022-jp?B?......?=',
    ),
);
</pre>

</div>

<hr>
<h4><a href="/qdmail_rec/header#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/header#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>既読・未読の管理とUID機能の解説</title>
		<link>http://hal456.net/qdmail_rec/uid</link>
		<guid>http://hal456.net/qdmail_rec/uid</guid>
		<category>未分類</category>
		<pubDate>Mon, 12 May 2008 11:05:36 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
一般的に使われているPOPプロトコルには、既読・未読の管理機能はありません。<br>
一般的にメーラー<span class="footnote"><a title="OutlookExpressをはじめBecky!や秀丸メール、その他ほとんどすべてのメーラー" href="http://hal456.net/qdmail_rec/uid#fn1" name="n1">*1</a></span>は、そのソフトウエア<span class="footnote"><a title="クライアント" href="http://hal456.net/qdmail_rec/uid#fn2" name="n2">*2</a></span>で独自に既読・未読管理を行っています。<br>
<h4><a href="http://hal456.net/qdmail_rec/uid#p0.1" name="p0.1" class="linkall"><span class="sanchor"></span>QdmailReceiverで既読・未読管理を行うには？</a></h4>
POPサーバーの多くは、UIDという機能を有しています。<br>
これは、「受信サーバーが付けたメール番号」です。<br>
その形式は様々です。<br>
例）<br>
<table>
<tbody>
	<tr class="odd"><td>プロバイダorレンタルサーバー名</td><td>UIDの形式</td></tr>
	<tr class="even"><td>so-net</td><td>数字5桁</td></tr>
	<tr class="odd"><td>ドリームネット</td><td>数字n桁.数字n桁.サーバーNumber?</td></tr>
	<tr class="even"><td>ロリポップ</td><td>数字n桁.数字n桁.サーバーNumber.lolipop.jp</td></tr>
	<tr class="odd"><td>さくらインターネット</td><td>UID数字n桁-数字n桁</td></tr>
</tbody></table>
<br>
このUIDは、セッション（プロセス）が異なっても、その受信サーバー内では一意に保たれているのが通常です<span class="footnote"><a title="メッセージ本文が全く同じ場合は、同じUIDになってしまうサーバーもあることはあるようだ。POPのプロトコル上は、メッセージが同じであれば同じUIDを返すことになっているけれども、多くのサーバーはそれを拡張し、同じメッセージであっても異なるUIDを返す場合が多いと思う" href="http://hal456.net/qdmail_rec/uid#fn3" name="n3">*3</a></span>。<br>
<br>
UIDは、QdmailReceiverの場合、「popuid」という名称のヘッダー情報として格納します<span class="footnote"><a title="UIDをサポートしないサーバーのため、格納しないように設定することもできる。" href="http://hal456.net/qdmail_rec/uid#fn4" name="n4">*4</a></span>。<br>
これをデータベースなり、ファイル、セッション変数等に格納することで、既読・未読の管理をすることができるでしょう。<br>
<h4><a href="http://hal456.net/qdmail_rec/uid#p0.2" name="p0.2" class="linkall"><span class="sanchor"></span>Pointer number は既読・未読管理に不向き</a></h4>
QdmailReceiver (及びPOPの仕様)では$receiver-&gt;pointer();<span class="footnote"><a title="又は、qd_receive_mail('pointer', ..." href="http://hal456.net/qdmail_rec/uid#fn5" name="n5">*5</a></span>)機能で、メールの番号付けを行います。<br>
これは、メールを受信順に１から番号付けしてくれるものですが、しかし、これは当該セッション（プロセス）内だけで有効なものです。<br>
メールの取得や削除には、Pointer Numberを使いますが、そのPOPプロセス内<span class="footnote"><a title="サーバーやPHPのプロセスではなく、POPのプロセス" href="http://hal456.net/qdmail_rec/uid#fn6" name="n6">*6</a></span>だけ、ということは意識しておいてください。<br>
<table>
<tbody>
	<tr class="odd"><td></td><td>継続性</td><td>範囲</td><td>サポート</td></tr>
	<tr class="even"><td>PointerNumber</td><td>POPプロセス内</td><td>そのサーバー内だけ</td><td>どのPOPサーバーもOK</td></tr>
	<tr class="odd"><td>UID(popuid)</td><td>削除するまでは<br>一意に保たれる</td><td>そのサーバー内だけ</td><td>たまにサポートしてない<br>サーバーもあるようだ<span class="footnote"><a title="お目にかかったことはないけれど。一応この機能はPOP3プロトコルのオプション扱い" href="http://hal456.net/qdmail_rec/uid#fn7" name="n7">*7</a></span></td></tr>
</tbody></table>
<h4><a href="http://hal456.net/qdmail_rec/uid#p0.3" name="p0.3" class="linkall"><span class="sanchor"></span>UIDとPointerNumberの変換</a></h4>
<h5> UID →　PointerNumber（ポインタは移動しません。）</h5>
<pre>
$receiver -&gt; uidToPointer( uid );
または、
qd_receive_mail( 'uidToPointer' , uid );
</pre>
<h5> 　PointerNumber → UID　（ポインタが移動するので注意してください。）</h5>
<pre>
$receiver -&gt; pointer( PointerNumber );
$receiver -&gt; header( 'popuid' );
または、

qd_receive_mail( 'pointer' , PointerNumber );
qd_receive_mail( 'popuid' );
</pre>
とすることで、UIDとPOINTERの変換ができます。<br>

</div>
<div class="footnote">
	<p class="footnote"><a href="http://hal456.net/qdmail_rec/uid#n1" name="fn1">*1</a> : OutlookExpressをはじめBecky!や秀丸メール、その他ほとんどすべてのメーラー</p>
	<p class="footnote"><a href="http://hal456.net/qdmail_rec/uid#n2" name="fn2">*2</a> : クライアント</p>
	<p class="footnote"><a href="http://hal456.net/qdmail_rec/uid#n3" name="fn3">*3</a> : メッセージ本文が全く同じ場合は、同じUIDになってしまうサーバーもあることはあるようだ。POPのプロトコル上は、メッセージが同じであれば同じUIDを返すことになっているけれども、多くのサーバーはそれを拡張し、同じメッセージであっても異なるUIDを返す場合が多いと思う</p>
	<p class="footnote"><a href="http://hal456.net/qdmail_rec/uid#n4" name="fn4">*4</a> : UIDをサポートしないサーバーのため、格納しないように設定することもできる。</p>
	<p class="footnote"><a href="http://hal456.net/qdmail_rec/uid#n5" name="fn5">*5</a> : 又は、qd_receive_mail('pointer', ...</p>
	<p class="footnote"><a href="http://hal456.net/qdmail_rec/uid#n6" name="fn6">*6</a> : サーバーやPHPのプロセスではなく、POPのプロセス</p>
	<p class="footnote"><a href="http://hal456.net/qdmail_rec/uid#n7" name="fn7">*7</a> : お目にかかったことはないけれど。一応この機能はPOP3プロトコルのオプション扱い</p>
</div>

<hr>
<h4><a href="/qdmail_rec/uid#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/uid#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
	<item>
		<title>POP初期設定</title>
		<link>http://hal456.net/qdmail_rec/pop_init</link>
		<guid>http://hal456.net/qdmail_rec/pop_init</guid>
		<category>未分類</category>
		<pubDate>Mon, 12 May 2008 11:03:15 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
POPサーバー（受信サーバー）にアクセスするための初期設定が必要です。<br>
</div>

<div class="section">
<h3><a href="http://hal456.net/qdmail_rec/pop_init#p1" name="p1"><span class="sanchor">■</span></a>一般関数タイプの例）</h3>
<pre>

 include_once('qdmail_receiver.php');

 $server = array(
    'protocol'=&gt;'pop3',
    'host'=&gt;'pop.example.com',
    'user'=&gt;'user-id',
    'pass'=&gt;'password',
 );

 qd_receive_mail( 'start' , $server ); 

</pre>
ご自分でお使いの受信サーバーを設定してください。<br>
<blockquote>
    'protocol'=&gt;'pop3',<br>
</blockquote>
はPOPモードにするためのおまじないですので、このまま、配列の一番最初に置いておいてください。<br>
配列のキーは、大文字小文字を区別しませんが、将来のことを考えて小文字を推奨します。<br>
qd_receive_mailが、一般関数タイプの関数です。オブジェクト指向ではありません。<br>
以下のように使います。<br>
<blockquote>
qd_receive_mail( 'コマンド' , $server )<br>
</blockquote>
<table>
<tbody>
	<tr class="odd"><td colspan="2"></td></tr>
</tbody></table>
一度、<br>
<blockquote>
qd_receive_mail( 'start' , $server )<br>
</blockquote>
で初期化すると、QdmailReceiverは、ＰＯＰと接続し、状態を覚えていますので、次回以降の操作で'start'コマンドを送ることはありません。<br>
<h5>文字コードについて</h5>
QdmailReceiverは、返り値をすべてmb_internal_encoding()で設定された文字コードに変換して渡します。<br>
<br>
返り値を特定の文字コードで受け取りたい場合は、次のように指定してください。<br>
<blockquote>
qd_receive_mail( 'start' , $server , '文字コード')<br>
</blockquote>
以下は、utf-8を指定した場合です。<br>
<pre>
 $server = array(
    'protocol'=&gt;'pop3',
    'host'=&gt;'pop.example.com',
    'user'=&gt;'user-id',
    'pass'=&gt;'password',
 );

 qd_receive_mail( 'start' , $server , 'utf-8' ); 

</pre>
</div>

<div class="section">
<h3><a href="http://hal456.net/qdmail_rec/pop_init#p2" name="p2"><span class="sanchor">■</span></a>オブジェクト指向モードでの初期化</h3>
<pre>
 $server = array(
    'protocol'=&gt;'pop3',
    'host'=&gt;'pop.example.com',
    'user'=&gt;'user-id',
    'pass'=&gt;'password',
 );

$receiver = QdmailReceiver::start( 'pop' , $server);

</pre>
'pop'は、POPモードにするためのおまじないです。<br>
$receiverにはQdmailReceiverのオブジェクトが代入されます。<br>
newを使わずに、オブジェクトを取得します。このような取得の仕方がわからない方もいるかも知れませんが、& new するのと同じと思ってください。<br>
newで、QdmailReceiverオブジェクトを取得することもできるのですが、3つのモードの振り分け処理を自分でしなくてはならないので、上記の方法をお薦めします。<br>

</div>

<hr>
<h4><a href="/qdmail_rec/pop_init#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/pop_init#tb">■トラックバック（2件）</a></h4>
<div style="margin-left: 1em;">
<a href="http://hal456.net/qdmail_rec/oop_base" rel="nofollow">基本モード（ＯＯＰモード）</a> （QdmailReceiver Multibyte mail decoder & POP Client） by spok<br>
<a href="http://hal456.net/qdmail_rec/pop_only2" rel="nofollow">POP特有の処理(OOPタイプ)</a> （QdmailReceiver Multibyte mail decoder & POP Client） by spok<br>
</div>
]]></description>
	</item>
	<item>
		<title>POPモード</title>
		<link>http://hal456.net/qdmail_rec/pop_base</link>
		<guid>http://hal456.net/qdmail_rec/pop_base</guid>
		<category>未分類</category>
		<pubDate>Mon, 12 May 2008 11:02:03 GMT</pubDate>
		<author>spok</author>
		<description><![CDATA[<div class="section">
<h3><a href="http://hal456.net/qdmail_rec/pop_base#p1" name="p1"><span class="sanchor">■</span></a>POPモードとは</h3>
POPモードは、メール受信サーバーにPOP接続し、サーバーに蓄積されているメールをダウンロードして解析するプログラムです。<br>

</div>

<hr>
<h4><a href="/qdmail_rec/pop_base#c">■コメント（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
<h4><a href="/qdmail_rec/pop_base#tb">■トラックバック（0件）</a></h4>
<div style="margin-left: 1em;">
</div>
]]></description>
	</item>
</channel>
</rss>
