2014-08-01T23:41:25の更新内容

works/libs/Smdn.Net.Pop3.Client/releases/index.wiki.txt

current previous
7,19 7,6
 
以下のバージョンはすべて[[MIT X11ライセンス>http://sourceforge.jp/projects/opensource/wiki/licenses/MIT_license]]でのリリースとなります。
以下のバージョンはすべて[[MIT X11ライセンス>http://sourceforge.jp/projects/opensource/wiki/licenses/MIT_license]]でのリリースとなります。
 

        

        
 
|~バージョン|>|~パッケージ|h
|~バージョン|>|~パッケージ|h
+
|~[[1.25 (2014-08-01)>#changes_v1.25]]|~ソースコード|{{
+
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.25.tar.bz2}
+
}}|
+
|~|~DLL|{{
+
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.25-netfx4.5.zip,.NET 4.5}
+
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.25-netfx4.0.zip,.NET 4}
+
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.25-netfx3.5.zip,.NET 3.5}
+
}}|
+
|~|~DLL&br;([[単一アセンブリ版>#releases_combined]])|{{
+
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.25-netfx4.5-combined.zip,.NET 4.5}
+
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.25-netfx4.0-combined.zip,.NET 4}
+
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.25-netfx3.5-combined.zip,.NET 3.5}
+
}}|
 
|~[[1.24 (2014-06-21)>#changes_v1.24]]|~ソースコード|{{
|~[[1.24 (2014-06-21)>#changes_v1.24]]|~ソースコード|{{
 
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.24.tar.bz2}
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.24.tar.bz2}
 
}}|
}}|
306,15 293,6
 
コンパイラにMono mcsを使用、オプションに/debug- /optimize+ /define:TRACEを指定してビルドしています。
コンパイラにMono mcsを使用、オプションに/debug- /optimize+ /define:TRACEを指定してビルドしています。
 

        

        
 
*変更履歴 [#changes]
*変更履歴 [#changes]
+
**1.25 (2014-08-01) [#changes_v1.25]
+
-機能追加
+
--PopClient
+
---PopClient.Download*Async()を追加
+
-修正・改善
+
--以前のバージョンでobsoleteにしたメンバーを削除
+
--PopClient
+
---PopMessageInfo.SaveAsyncとPopMessageInfo.WriteToAsync(Stream)について、一時バッファを介さず与えられたStreamに直接書き込みを行うよう改善
+

          
 
**1.24 (2014-06-21) [#changes_v1.24]
**1.24 (2014-06-21) [#changes_v1.24]
 
-修正・改善
-修正・改善
 
--PopClient
--PopClient

works/libs/Smdn.Net.Pop3.Client/index.wiki.txt

current previous
13,7 13,7
 
*ダウンロード
*ダウンロード
 
本ライブラリは[[MIT X11ライセンス:http://sourceforge.jp/projects/opensource/wiki/licenses/MIT_license]]でのリリースとなります。
本ライブラリは[[MIT X11ライセンス:http://sourceforge.jp/projects/opensource/wiki/licenses/MIT_license]]でのリリースとなります。
 

        

        
~
:最新版 (ソースコード)|${smdncms:distfilelink,Smdn.Net.Pop3.Client-1.25.tar.bz2}
:最新版 (ソースコード)|${smdncms:distfilelink,Smdn.Net.Pop3.Client-1.24.tar.bz2}
 
:開発版|[[http://svn.smdn.jp/anonsvn/libs/Smdn/trunk/]]よりチェックアウトできます
:開発版|[[http://svn.smdn.jp/anonsvn/libs/Smdn/trunk/]]よりチェックアウトできます
 
:ビルド済みパッケージ・過去のバージョン|[[works/libs/Smdn.Net.Pop3.Client/releases]]をご覧ください
:ビルド済みパッケージ・過去のバージョン|[[works/libs/Smdn.Net.Pop3.Client/releases]]をご覧ください
 

        

        

works/libs/Smdn.Net.Pop3.Client/docs/index.wiki.txt

current previous
2,7 2,7
 
${smdncms:keywords,}
${smdncms:keywords,}
 
${smdncms:document_versions,codelang=cs,codelang=vb}
${smdncms:document_versions,codelang=cs,codelang=vb}
 
${pragma,parser-options,non-limited-list}
${pragma,parser-options,non-limited-list}
~
[[works/libs/Smdn.Net.Pop3.Client]]のドキュメントとサンプルです。 ここに記載されているものは[[version 1.25>works/libs/Smdn.Net.Pop3.Client/releases#changes_v1.25]]時点のものです。
[[works/libs/Smdn.Net.Pop3.Client]]のドキュメントとサンプルです。 ここに記載されているものは[[version 1.24>works/libs/Smdn.Net.Pop3.Client/releases#changes_v1.24]]時点のものです。
 

        

        
 
サンプルコードは[[このページの最後>#samples]]にあります。
サンプルコードは[[このページの最後>#samples]]にあります。
 

        

        
680,96 680,43
 
|~メソッド|~解説|~対応するPOPコマンド|h
|~メソッド|~解説|~対応するPOPコマンド|h
 
|{{
|{{
 
DownloadMessageAsText(long, Encoding)
DownloadMessageAsText(long, Encoding)
+
DownloadMessageAsTextAsync(long, Encoding)
+
}}|(指定された番号の/最初の/最後の/すべての)メッセージの本文をstringで取得します。&br;PopClient.GetMessage()等とPopMessageInfo.ReadAllText(Encoding)の呼び出しの組み合わせと同等です。|RETR|
+
|{{
 
DownloadFirstMessageAsText(Encoding)
DownloadFirstMessageAsText(Encoding)
+
DownloadFirstMessageAsTextAsync(Encoding)
+
}}|~|~|
+
|{{
 
DownloadLastMessageAsText(Encoding)
DownloadLastMessageAsText(Encoding)
+
DownloadLastMessageAsTextAsync(Encoding)
+
}}|~|~|
+
|{{
 
DownloadAllMessagesAsText(Encoding)
DownloadAllMessagesAsText(Encoding)
~
DownloadAllMessagesAsTextAsync(Encoding)
}}|(指定された番号の/最初の/最後の/すべての)メッセージの本文をstringで取得します。&br;PopClient.GetMessage()等とPopMessageInfo.ReadAllText(Encoding)の呼び出しの組み合わせと同等です。|RETR|
+
}}|~|~|
 
|{{
|{{
 
DownloadMessageAsByteArray(long)
DownloadMessageAsByteArray(long)
+
DownloadMessageAsByteArrayAsync(long)
+
}}|(指定された番号の/最初の/最後の)メッセージの本文をbyte[]で取得します。&br;PopClient.GetMessage()等とPopMessageInfo.ReadAllBytes()の呼び出しの組み合わせと同等です。|~|
+
|{{
 
DownloadFirstMessageAsByteArray()
DownloadFirstMessageAsByteArray()
+
DownloadFirstMessageAsByteArrayAsync()
+
}}|~|~|
+
|{{
 
DownloadLastMessageAsByteArray()
DownloadLastMessageAsByteArray()
~
DownloadLastMessageAsByteArrayAsync()
}}|(指定された番号の/最初の/最後の)メッセージの本文をbyte[]で取得します。&br;PopClient.GetMessage()等とPopMessageInfo.ReadAllBytes()の呼び出しの組み合わせと同等です。|RETR|
+
}}|~|~|
 
|{{
|{{
 
DownloadMessageAsStream(long)
DownloadMessageAsStream(long)
+
DownloadMessageAsStreamAsync(long)
+
}}|(指定された番号の/最初の/最後の)メッセージの本文を読み込むためのStreamを取得します。&br;PopClient.GetMessage()等とPopMessageInfo.OpenRead()の呼び出しの組み合わせと同等です。|~|
+
|{{
 
DownloadFirstMessageAsStream()
DownloadFirstMessageAsStream()
+
DownloadFirstMessageAsStreamAsync()
+
}}|~|~|
+
|{{
 
DownloadLastMessageAsStream()
DownloadLastMessageAsStream()
~
DownloadLastMessageAsStreamAsync()
}}|(指定された番号の/最初の/最後の)メッセージの本文を読み込むためのStreamを取得します。&br;PopClient.GetMessage()等とPopMessageInfo.OpenRead()の呼び出しの組み合わせと同等です。|RETR|
+
}}|~|~|
 
|{{
|{{
 
DownloadMessageAs<TResult>(long, Converter<Stream, TResult>)
DownloadMessageAs<TResult>(long, Converter<Stream, TResult>)
+
DownloadMessageAsAsync<TResult>(long, Converter<Stream, TResult>)
+
}}|(指定された番号の/最初の/最後の/すべての)メッセージの本文を読み込むためのStreamを取得し、指定されたConverter<Stream, TResult>で変換された結果を取得します。&br;PopClient.GetMessage()等とPopMessageInfo.ReadAs<TResult>(Converter<Stream, TResult>)の呼び出しの組み合わせと同等です。|~|
+
|{{
 
DownloadFirstMessageAs<TResult>(Converter<Stream, TResult>)
DownloadFirstMessageAs<TResult>(Converter<Stream, TResult>)
+
DownloadFirstMessageAsAsync<TResult>(Converter<Stream, TResult>)
+
}}|~|~|
+
|{{
 
DownloadLastMessageAs<TResult>(Converter<Stream, TResult>)
DownloadLastMessageAs<TResult>(Converter<Stream, TResult>)
+
DownloadLastMessageAsAsync<TResult>(Converter<Stream, TResult>)
+
}}|~|~|
+
|{{
 
DownloadAllMessageAs<TResult>(Converter<Stream, TResult>)
DownloadAllMessageAs<TResult>(Converter<Stream, TResult>)
~
DownloadAllMessageAsAsync<TResult>(Converter<Stream, TResult>)
}}|(指定された番号の/最初の/最後の/すべての)メッセージの本文を読み込むためのStreamを取得し、指定されたConverter<Stream, TResult>で変換された結果を取得します。&br;PopClient.GetMessage()等とPopMessageInfo.ReadAs<TResult>(Converter<Stream, TResult>)の呼び出しの組み合わせと同等です。|RETR|
+
}}|~|~|
 
|{{
|{{
 
DownloadMessageAs<T, TResult>(long, Func<Stream, T, TResult>, T)
DownloadMessageAs<T, TResult>(long, Func<Stream, T, TResult>, T)
+
DownloadMessageAsAsync<T, TResult>(long, Func<Stream, T, TResult>, T)
+
}}|(指定された番号の/最初の/最後の/すべての)メッセージの本文を読み込むためのStreamを取得し、指定されたFunc<Stream, T, TResult>で変換された結果を取得します。&br;PopClient.GetMessage()等とPopMessageInfo.ReadAs<T, TResult>(Func<Stream, T, TResult>, T)の呼び出しの組み合わせと同等です。|~|
+
|{{
 
DownloadFirstMessageAs<T, TResult>(Func<Stream, T, TResult>, T)
DownloadFirstMessageAs<T, TResult>(Func<Stream, T, TResult>, T)
+
DownloadFirstMessageAsAsync<T, TResult>(Func<Stream, T, TResult>, T)
+
}}|~|~|
+
|{{
 
DownloadLastMessageAs<T, TResult>(Func<Stream, T, TResult>, T)
DownloadLastMessageAs<T, TResult>(Func<Stream, T, TResult>, T)
+
DownloadLastMessageAsAsync<T, TResult>(Func<Stream, T, TResult>, T)
+
}}|~|~|
+
|{{
 
DownloadAllMessageAs<T, TResult>(Func<Stream, T, TResult>, T)
DownloadAllMessageAs<T, TResult>(Func<Stream, T, TResult>, T)
~
DownloadAllMessageAsAsync<T, TResult>(Func<Stream, T, TResult>, T)
}}|(指定された番号の/最初の/最後の/すべての)メッセージの本文を読み込むためのStreamを取得し、指定されたFunc<Stream, T, TResult>で変換された結果を取得します。&br;PopClient.GetMessage()等とPopMessageInfo.ReadAs<T, TResult>(Func<Stream, T, TResult>, T)の呼び出しの組み合わせと同等です。|RETR|
+
}}|~|~|
 
|{{
|{{
 
DownloadMessageToFile(long, string)
DownloadMessageToFile(long, string)
+
DownloadMessageToFileAsync(long, string)
+
}}|(指定された番号の/最初の/最後の)メッセージの本文を指定されたファイルに保存します。&br;PopClient.GetMessage()等とPopMessageInfo.Save(string)の呼び出しの組み合わせと同等です。|~|
+
|{{
 
DownloadFirstMessageToFile(string)
DownloadFirstMessageToFile(string)
+
DownloadFirstMessageToFileAsync(string)
+
}}|~|~|
+
|{{
 
DownloadLastMessageToFile(string)
DownloadLastMessageToFile(string)
~
DownloadLastMessageToFileAsync(string)
}}|(指定された番号の/最初の/最後の)メッセージの本文を指定されたファイルに保存します。&br;PopClient.GetMessage()等とPopMessageInfo.Save(string)の呼び出しの組み合わせと同等です。|RETR|
+
}}|~|~|
 
|{{
|{{
 
DownloadAllMessagesToDirectory(string)
DownloadAllMessagesToDirectory(string)
~
DownloadAllMessagesToDirectoryAsync(string)
}}|すべてのメッセージの本文を指定されたディレクトリに保存します。 個々のメッセージは "&var{(メッセージ番号)};.eml" のファイル名で保存されます。&br;PopClient.GetMessage()等とPopMessageInfo.Save(string)の呼び出しの組み合わせと同等です。|RETR|
+
}}|すべてのメッセージの本文を指定されたディレクトリに保存します。 個々のメッセージは "&var{(メッセージ番号)};.eml" のファイル名で保存されます。&br;PopClient.GetMessage()等とPopMessageInfo.Save(string)の呼び出しの組み合わせと同等です。|~|
 
|{{
|{{
 
DownloadAllMessagesToFiles(Func<PopMessageInfo, string>)
DownloadAllMessagesToFiles(Func<PopMessageInfo, string>)
~
DownloadAllMessagesToFilesAsync(Func<PopMessageInfo, string>)
}}|すべてのメッセージの本文を指定されたデリゲートが返すファイル名で保存します。&br;PopClient.GetMessage()等とPopMessageInfo.Save(string)の呼び出しの組み合わせと同等です。|RETR|
+
}}|すべてのメッセージの本文を指定されたデリゲートが返すファイル名で保存します。&br;PopClient.GetMessage()等とPopMessageInfo.Save(string)の呼び出しの組み合わせと同等です。|~|
 

        

        
 
|*PopClientクラスのプロパティ
|*PopClientクラスのプロパティ
 
|~プロパティ|~解説|h
|~プロパティ|~解説|h
779,7 726,7
 
-すべてのメソッドは、既定ではRETRコマンドを用いてメッセージ本文全体を取得します。
-すべてのメソッドは、既定ではRETRコマンドを用いてメッセージ本文全体を取得します。
 
maxLinesを引数に取るバージョンのオーバーロードを使用することで、TOPコマンドを用いてメッセージ本文のうちヘッダ部分とボディ部分の指定した行数のみを取得することもできます。
maxLinesを引数に取るバージョンのオーバーロードを使用することで、TOPコマンドを用いてメッセージ本文のうちヘッダ部分とボディ部分の指定した行数のみを取得することもできます。
 
-すべてのメソッドは、取得したメッセージ本文をキャッシュしません。 ''メソッド呼び出しの度にメッセージ本文のダウンロードを行います。'' 同じメッセージを何度も処理する必要がある場合は、OpenRead()メソッドで取得したStreamを先頭にシークしなおして使用するか、Save()メソッドでファイルに保存するなどしてください。
-すべてのメソッドは、取得したメッセージ本文をキャッシュしません。 ''メソッド呼び出しの度にメッセージ本文のダウンロードを行います。'' 同じメッセージを何度も処理する必要がある場合は、OpenRead()メソッドで取得したStreamを先頭にシークしなおして使用するか、Save()メソッドでファイルに保存するなどしてください。
~
-OpenReadAsync()など名前がAsyncで終わるメソッドは非同期バージョンのメソッドです。 非同期的に動作する以外は同期バージョンと同じです。 非同期バージョンのメソッドを使う際の注意点は[[#async_operations]]を参照してください。
-OpenReadAsync()など名前がAsyncで終わるメソッドは非同期バージョンのメソッドです。 基本的な動作は同期バージョンと同じです。 非同期バージョンのメソッドを使う際の注意点は[[#async_operations]]を参照してください。
 
-インスタンスを作成したPopClientを切断した後にこれらのメソッド・プロパティを呼び出そうとした場合、PopProtocolViolationExceptionをスローします。
-インスタンスを作成したPopClientを切断した後にこれらのメソッド・プロパティを呼び出そうとした場合、PopProtocolViolationExceptionをスローします。
 
-OpenText(), ReadAllLines()などのメソッドは、既定ではstringへのデコードにISO-8859-1を使用します。
-OpenText(), ReadAllLines()などのメソッドは、既定ではstringへのデコードにISO-8859-1を使用します。
 
Encodingを引数に取るバージョンのオーバーロードを使用することで、指定したエンコーディングでデコードすることもできます。
Encodingを引数に取るバージョンのオーバーロードを使用することで、指定したエンコーディングでデコードすることもできます。

works/libs/Smdn.Net.Imap4.Client/releases/index.wiki.txt

current previous
7,19 7,6
 
以下のバージョンはすべて[[MIT X11ライセンス>http://sourceforge.jp/projects/opensource/wiki/licenses/MIT_license]]でのリリースとなります。
以下のバージョンはすべて[[MIT X11ライセンス>http://sourceforge.jp/projects/opensource/wiki/licenses/MIT_license]]でのリリースとなります。
 

        

        
 
|~バージョン|>|~パッケージ|h
|~バージョン|>|~パッケージ|h
+
|~[[1.11 (2014-08-01)>#changes_v1.11]]|~ソースコード|{{
+
${smdncms:distfilelink,../Smdn.Net.Imap4.Client-1.11.tar.bz2}
+
}}|
+
|~|~DLL|{{
+
${smdncms:distfilelink,../Smdn.Net.Imap4.Client-1.11-netfx4.5.zip,.NET 4.5}
+
${smdncms:distfilelink,../Smdn.Net.Imap4.Client-1.11-netfx4.0.zip,.NET 4}
+
${smdncms:distfilelink,../Smdn.Net.Imap4.Client-1.11-netfx3.5.zip,.NET 3.5}
+
}}|
+
|~|~DLL&br;([[単一アセンブリ版>#releases_combined]])|{{
+
${smdncms:distfilelink,../Smdn.Net.Imap4.Client-1.11-netfx4.5-combined.zip,.NET 4.5}
+
${smdncms:distfilelink,../Smdn.Net.Imap4.Client-1.11-netfx4.0-combined.zip,.NET 4}
+
${smdncms:distfilelink,../Smdn.Net.Imap4.Client-1.11-netfx3.5-combined.zip,.NET 3.5}
+
}}|
 
|~[[1.10 (2014-07-19)>#changes_v1.10]]|~ソースコード|{{
|~[[1.10 (2014-07-19)>#changes_v1.10]]|~ソースコード|{{
 
${smdncms:distfilelink,../Smdn.Net.Imap4.Client-1.10.tar.bz2}
${smdncms:distfilelink,../Smdn.Net.Imap4.Client-1.10.tar.bz2}
 
}}|
}}|
349,22 336,6
 
コンパイラにMono mcsを使用、オプションに/debug- /optimize+ /define:TRACEを指定してビルドしています。
コンパイラにMono mcsを使用、オプションに/debug- /optimize+ /define:TRACEを指定してビルドしています。
 

        

        
 
*変更履歴 [#changes]
*変更履歴 [#changes]
+
**1.11 (2014-08-01) [#changes_v1.11]
+
主にImapMessagePartInfoクラスの追加とIImapBodyStructureを使用するメンバの廃止。
+

          
+
-機能追加
+
--IImapBodyStructure.HasEncapsulatedMessageを追加
+
--ImapClient
+
---メッセージの構造(BODYSTRUCTURE)およびメッセージパート情報を扱うクラスImapMessagePartInfoを追加
+
---ImapMessageInfo.HasEncapsulatedMessageを追加
+
---ImapMessageInfo.MessagePartを追加、メッセージの構造とメッセージパート情報をImapMessagePartInfoクラスで扱えるようにした
+
---ImapMessageInfo.GetMessagePart(), FindMessagePart(), FindAllMessageParts()を追加、メッセージ内のメッセージパート情報をImapMessagePartInfoクラスで取得できるようにした
+
-修正・改善
+
--ImapClient
+
---以下のメンバをobsoleteにした(動作に変更なし、今バージョンでは警告のみで引き続き使用可能、今後のバージョンでエラー化、後に削除予定)
+
----ImapMessageInfo.BodyStructure
+
----ImapMessageInfo.OpenRead, Save, WriteToなどのメソッドのオーバーロードのうち、string sectionおよびIImapBodyStructure sectionを引数にとるバージョン
+

          
 
**1.10 (2014-07-19) [#changes_v1.10]
**1.10 (2014-07-19) [#changes_v1.10]
 
主に非同期操作用のメソッドの追加。
主に非同期操作用のメソッドの追加。
 

        

        

works/libs/Smdn.Net.Imap4.Client/index.wiki.txt

current previous
14,7 14,7
 
本ライブラリは[[MIT X11ライセンス:http://sourceforge.jp/projects/opensource/wiki/licenses/MIT_license]]でのリリースとなります。
本ライブラリは[[MIT X11ライセンス:http://sourceforge.jp/projects/opensource/wiki/licenses/MIT_license]]でのリリースとなります。
 

        

        
 
:最新版 (ソースコード)|${smdncms:distfilelink,Smdn.Net.Imap4.Client-1.05.tar.bz2}
:最新版 (ソースコード)|${smdncms:distfilelink,Smdn.Net.Imap4.Client-1.05.tar.bz2}
~
${smdncms:distfilelink,Smdn.Net.Imap4.Client-1.11.tar.bz2}
${smdncms:distfilelink,Smdn.Net.Imap4.Client-1.10.tar.bz2}
 
:開発版|[[http://svn.smdn.jp/anonsvn/libs/Smdn/trunk/]]よりチェックアウトできます
:開発版|[[http://svn.smdn.jp/anonsvn/libs/Smdn/trunk/]]よりチェックアウトできます
 
:ビルド済みパッケージ・過去のバージョン|[[works/libs/Smdn.Net.Imap4.Client/releases]]をご覧ください
:ビルド済みパッケージ・過去のバージョン|[[works/libs/Smdn.Net.Imap4.Client/releases]]をご覧ください
 

        

        

works/libs/Smdn.Net.Imap4.Client/docs/index.wiki.txt

current previous
2,7 2,7
 
${smdncms:keywords,}
${smdncms:keywords,}
 
${smdncms:document_versions,codelang=cs,codelang=vb}
${smdncms:document_versions,codelang=cs,codelang=vb}
 
${pragma,parser-options,non-limited-list}
${pragma,parser-options,non-limited-list}
~
[[works/libs/Smdn.Net.Imap4.Client]]のドキュメントとサンプルです。 ここに記載されているものは[[version 1.11>works/libs/Smdn.Net.Imap4.Client/releases#changes_v1.11]]時点のものです。
[[works/libs/Smdn.Net.Imap4.Client]]のドキュメントとサンプルです。 ここに記載されているものは[[version 1.10>works/libs/Smdn.Net.Imap4.Client/releases#changes_v1.10]]時点のものです。
 

        

        
 
認証・接続のサンプルコードは[[#connection_authentication_examples]]、IMAP操作を行う具体例は[[#operation_examples]]に記載しています。
認証・接続のサンプルコードは[[#connection_authentication_examples]]、IMAP操作を行う具体例は[[#operation_examples]]に記載しています。
 

        

        
582,9 582,8
 
|~メッセージ&br;(メール)|ImapMessageInfoBase|単一もしくは複数のメッセージに対する共通の操作を定義した抽象クラス。|
|~メッセージ&br;(メール)|ImapMessageInfoBase|単一もしくは複数のメッセージに対する共通の操作を定義した抽象クラス。|
 
|~|ImapMessageInfo|単一のメッセージを表すクラス。 ImapMessageInfoBaseから派生。|
|~|ImapMessageInfo|単一のメッセージを表すクラス。 ImapMessageInfoBaseから派生。|
 
|~|ImapMessageInfoList|複数のメッセージを表すクラス。 ImapMessageInfoBaseから派生。 IEnumerable<ImapMessageInfo>を実装。|
|~|ImapMessageInfoList|複数のメッセージを表すクラス。 ImapMessageInfoBaseから派生。 IEnumerable<ImapMessageInfo>を実装。|
+
|~メッセージパート|ImapMessagePartInfo|メッセージ内のメッセージパートを表すクラス。|
 

        

        
~
ImapClient以外のクラスのインスタンスは直接作成することはできません。 ImapMailboxInfo・ImapOpenedMailboxInfoはImapClientクラスのメソッドを呼び出すことで取得できます。 同様にImapMessageInfo・ImapMessageInfoListはImapOpenedMailboxInfoクラスのメソッド、ImapMessagePartInfoはImapMessageInfoクラスのメソッドを呼び出すことで取得できます。
ImapClient以外のクラスのインスタンスは直接作成することはできません。 ImapMailboxInfo・ImapOpenedMailboxInfoはImapClientクラスのメソッド、ImapMessageInfo・ImapMessageInfoListはImapOpenedMailboxInfoクラスのメソッドを呼び出すことで取得できます。
 

        

        
 
例えば、IMAPサーバに接続してメールボックス内にあるメッセージをダウンロードするまでの流れは次のようになります。
例えば、IMAPサーバに接続してメールボックス内にあるメッセージをダウンロードするまでの流れは次のようになります。
 

        

        
1429,8 1428,8
 
}}
}}
 
#tabpage-end
#tabpage-end
 

        

        
~
****メッセージのセクションとメッセージパート [#operation_examples_message_section]
****メッセージのセクション [#operation_examples_message_section]
~
IMAPでは、メールボックス内にあるMIMEメッセージの解析がサーバー側で行われます。 その結果、メッセージ内の各パートには1から始まる''セクション番号''が自動的に割り当てられます。 階層がネストしている場合は、親階層の番号の後にピリオド``.``で区切られたセクション番号が割り当てられます。 以下は、メッセージの構造と割り当てられるセクション番号の例です。
IMAPでは、メールボックス内にあるMIMEメッセージの解析がサーバー側で行われます。 それにより、メッセージ内の各パートには1から始まる''セクション番号''が自動的に割り当てられます。 階層がネストしている場合は、親階層の番号の後にピリオド``.``で区切られたセクション番号が割り当てられます。 以下は、メッセージの構造と割り当てられるセクション番号の例です。
 

        

        
 
#column
#column
 
#preformatted(本文の後に画像が添付されているメールの例){{
#preformatted(本文の後に画像が添付されているメールの例){{
1443,11 1442,7
 
multipart/mixed
multipart/mixed
 
|--[1] text/plain
|--[1] text/plain
 
|--[2] message/rfc822
|--[2] message/rfc822
+
|   `--[2.1] text/plain
 
`--[3] message/rfc822
`--[3] message/rfc822
+
    `--[3.1] multipart/alternative
+
       |--[3.1.1] text/plain
+
       `--[3.1.2] text/html
 
}}
}}
 
#column
#column
 
#preformatted(構造がネストしているメールの例){{
#preformatted(構造がネストしているメールの例){{
1463,9 1458,9
 
}}
}}
 
#column-end
#column-end
 

        

        
~
このセクション番号を指定することにより、IMAPではメッセージの全体ではなく特定のメッセージパートだけを取得することができます。 [[ImapMessageInfo.GetMessagePart()>#operation_reference_message_messagepart]]などのメソッドを使用することにより特定のメッセージパートを取得し、そのメッセージパートに関する情報を取得することができます。
IMAPでは、このセクション番号を指定することにより、メッセージの全体ではなく一部のメッセージパートだけを取得することができます。 ImapMessageInfo.ReadAllText()やSave()などメッセージの本文を取得するメソッドでは、[[セクションを指定するバージョンのメソッド>#operation_reference_message_section_bodystructure]]を使用することでメッセージの一部分だけを取得することができます。
 

        

        
~
例えば、次のような構造のメッセージから、セクション番号``1``(text/plainのパート)の本文だけを取得する場合は次のようにします。 コード中で使用しているGetMessagePart()メソッドおよびImapMessagePartInfoクラスについては[[#operation_examples_message_messagepart]]で追って解説します。
例えば、次のような構造のメッセージから、セクション番号``1``(text/plainのパート)だけを取得する場合は次のようにします。 コード中で使用しているGetStructureOf()メソッドおよびIImapBodyStructureについては[[#operation_examples_message_bodystructure]]で追って解説します。
 

        

        
 
#preformatted(メールボックスにあるメッセージの構造とセクション番号){{
#preformatted(メールボックスにあるメッセージの構造とセクション番号){{
 
multipart/mixed
multipart/mixed
1480,11 1475,11
 
    // 目的のメッセージはINBOX内にあるUIDが1のメッセージと仮定
    // 目的のメッセージはINBOX内にあるUIDが1のメッセージと仮定
 
    var message = mailbox.GetMessageByUid(1L, ImapMessageFetchAttributeOptions.StaticAttributes);
    var message = mailbox.GetMessageByUid(1L, ImapMessageFetchAttributeOptions.StaticAttributes);
 

        

        
~
    // メッセージのセクション番号1のメッセージパートを取得する
    // メッセージのセクション番号1の構造を取得する
~
    ImapMessagePartInfo part1 = message.GetMessagePart(1);
    IImapBodyStructure part1 = message.GetStructureOf(1);
 

        

        
~
    // セクション番号1のメッセージパートの本文のみを取得し、表示する
    // メッセージのセクション番号1のパートのみを取得し、表示する
~
    Console.WriteLine(part1.ReadAllText());
    Console.WriteLine(message.ReadAllText(part1));
 
  }
  }
 
}
}
 
}}
}}
1499,149 1494,17
 
    // 目的のメッセージはINBOX内にあるUIDが1のメッセージと仮定
    // 目的のメッセージはINBOX内にあるUIDが1のメッセージと仮定
 
    var message = mailbox.GetMessageByUid(1L, ImapMessageFetchAttributeOptions.StaticAttributes);
    var message = mailbox.GetMessageByUid(1L, ImapMessageFetchAttributeOptions.StaticAttributes);
 

        

        
~
    // セクション番号2のメッセージパートを取得する
    // メッセージのセクション番号2の構造を取得する
~
    ImapMessagePartInfo part2 = message.GetMessagePart(2);
    IImapBodyStructure part2 = message.GetStructureOf(2);
 

        

        
~
    // セクション番号2のメッセージパートの本文のみを取得・デコードし、ファイルに保存する
    // メッセージのセクション番号2のパートのみを取得・デコードし、ファイルに保存する
~
    part2.Save("attached-image.jpg", ImapMessageFetchBodyOptions.DecodeContent);
    message.Save("attached-image.jpg", part2, ImapMessageFetchBodyOptions.DecodeContent);
 
  }
  }
 
}
}
 
}}
}}
 
#tabpage-end
#tabpage-end
 

        

        
+
****メッセージの構造の取得とメッセージパートに対する操作 [#operation_examples_message_messagepart]
+
IMAPでは、サーバー側で解析されたMIMEメッセージの構造に関する情報(''BODYSTRUCTURE'')を取得することができます。 これにより、メッセージ全体を取得・パースしなくてもメッセージがどのような構造になっているかを本文の取得前に知ることができます。 取得したBODYSTRUCTUREの情報は[[ImapMessagePartInfoクラスのプロパティ>#operation_reference_messagepart_structure]]で参照することができます。 また、メッセージ全体の構造は[[ImapMessageInfo.MessagePartプロパティ>#operation_reference_messagepart_structure]]を参照することで取得することができます。
+

          
+
#tabpage(codelang=cs,container-title=BODYSTRUCTUREの参照)
+
#code{{
+
using (ImapClient client = new ImapClient()) {
+
  using (var mailbox = client.OpenInbox()) {
+
    // 目的のメッセージはINBOX内にあるUIDが1のメッセージと仮定
+
    // ImapMessageFetchAttributeOptions.StaticAttributesを指定することにより
+
    // BODYSTRUCTUREを含む静的属性も同時に取得する
+
    var message = mailbox.GetMessageByUid(1L, ImapMessageFetchAttributeOptions.StaticAttributes);
+

          
+
    // BODYSTRUCTUREを参照し、メッセージがマルチパートかどうかを調べる
+
    // (単にmessage.IsMultiPartとしても同じ)
+
    if (message.MessagePart.IsMultiPart) {
+
      // NestedMessagePartsプロパティを参照することでネストしている
+
      // メッセージパートを取得することができる
+
      foreach (ImapMessagePartInfo nestedPart in message.MessagePart.NestedMessageParts) {
+
        // ...
+
      }
+
    }
+
    else {
+
      // ImapMessagePartInfoクラスでは個々のメッセージパートに関する情報も取得できる
+
      // (これらの情報はすべてIMAPサーバーより提供される)
+
      Console.WriteLine(message.MessagePart.Length);
+
      Console.WriteLine(message.MessagePart.ContentDisposition);
+
      Console.WriteLine(message.MessagePart.ContentTransferEncoding);
+
      Console.WriteLine(message.MessagePart.HasEncapsulatedMessage);
+
      //   :
+
      //   :
+
    }
+
  }
+
}
+
}}
+
#tabpage-end
+

          
+
特定のメッセージパートを参照したい場合は、[[ImapMessageInfo.GetMessagePart()メソッド>#operation_reference_message_messagepart]]を使うことができます。 このメソッドでは、セクション番号を文字列または数値で指定することにより、そのセクションのメッセージパート情報を取得することができます。 また、[[FindMessagePart()またはFindAllMessageParts()メソッド>#operation_reference_message_messagepart]]を使うと、特定の条件(``Predicate<ImapMessagePartInfo>``)またはメディアタイプに該当するメッセージパートだけを取得することができます。
+

          
+
#tabpage(codelang=cs,container-title=特定のメッセージパートを取得する例)
+
#code{{
+
using (ImapClient client = new ImapClient()) {
+
  using (var mailbox = client.OpenInbox()) {
+
    // 目的のメッセージはINBOX内にあるUIDが1のメッセージと仮定
+
    // ImapMessageFetchAttributeOptions.StaticAttributesを指定することにより
+
    // BODYSTRUCTUREを含む静的属性も同時に取得する
+
    var message = mailbox.GetMessageByUid(1L, ImapMessageFetchAttributeOptions.StaticAttributes);
+

          
+
    ImapMessagePartInfo p;
+

          
+
    // セクション番号"1.2.3"のメッセージパートを取得する
+
    p = message.GetMessagePart("1.2.3");
+

          
+
    // セクション番号"1.2.3"のメッセージパートを取得する (上記のコードと同等)
+
    p = message.GetMessagePart(1, 2, 3);
+

          
+
    // メディアタイプがimage/jpegのメッセージパートをすべて取得して列挙する
+
    foreach (var jpegImagePart in message.FindAllMessageParts(new Smdn.MimeType("image/jpeg"))) {
+
      // メッセージパートの内容を取得・デコードしてファイルに保存する
+
      jpegImagePart.Save(jpegImagePart.Specifier + ".jpg", ImapMessageFetchBodyOptions.DecodeContent);
+
    }
+
  }
+
}
+
}}
+
#tabpage-end
+

          
+
FindAllMessageParts()メソッドを使った別の例として、メッセージから添付ファイルのメッセージパートを探してファイルに保存する例を挙げます。
+

          
+
#tabpage(codelang=cs,container-title=メッセージに添付されているファイルを保存する例)
+
#code{{
+
using (ImapClient client = new ImapClient()) {
+
  using (var mailbox = client.OpenInbox()) {
+
    // 目的のメッセージはINBOX内にあるUIDが1のメッセージと仮定
+
    // ImapMessageFetchAttributeOptions.StaticAttributesを指定することにより
+
    // BODYSTRUCTUREを含む静的属性も同時に取得する
+
    var message = mailbox.GetMessageByUid(1L, ImapMessageFetchAttributeOptions.StaticAttributes);
+

          
+
    // 取得したメッセージについて、Content-Disposition: attachmentヘッダの
+
    // あるメッセージパートを探して列挙する
+
    foreach (var attachmentPart in message.FindAllMessageParts(ImapMessagePartInfo.Predicates.IsAttachmentPart)) {
+
      // Content-TypeまたはContent-Dispositionヘッダからファイル名を取得する
+
      var filename = attachmentPart.GetContentFileName();
+

          
+
      if (filename == null)
+
        // (取得できなかった場合は、適当なファイル名を与える必要がある)
+
        filename = "attachment-file.xxx";
+

          
+
      // セクションの内容を取得・デコードしてファイルに保存する
+
      attachmentPart.Save(filename, ImapMessageFetchBodyOptions.DecodeContent);
+
    }
+
  }
+
}
+
}}
+
#tabpage-end
+

          
+
Traverse()メソッドを使うと、メッセージ内のすべてのメッセージパートを走査することができます。
+

          
+
#tabpage(codelang=cs,container-title=メッセージ構造の走査を行う例)
+
#code{{
+
using (ImapClient client = new ImapClient()) {
+
  using (var mailbox = client.OpenInbox()) {
+
    var message = mailbox.GetMessageByUid(1L, ImapMessageFetchAttributeOptions.StaticAttributes);
+

          
+
    // すべてのメッセージパートを走査して表示する
+
    message.MessagePart.Traverse(true, delegate (ImapMessagePartInfo part) {
+
      Console.WriteLine("[{0}] {1}", part.Specifier, part.ContentType);
+
    });
+
  }
+
}
+
}}
+
#tabpage-end
+

          
+
#code(prompt,実行結果の一例){{
+
[] multipart/mixed
+
[1] text/plain
+
[2] message/rfc822
+
[2.1] text/plain
+
[3] message/rfc822
+
[3.1] text/plain
+
}}
+

          
+
#code(prompt,実行結果の一例){{
+
[] multipart/mixed
+
[1] text/plain
+
[2] image/jpeg
+
[3] image/jpeg
+
[4] image/jpeg
+
}}
+

          
+

          
+

          
 
****メッセージの構造(BODYSTRUCTURE) [#operation_examples_message_bodystructure]
****メッセージの構造(BODYSTRUCTURE) [#operation_examples_message_bodystructure]
+
(&color(red){廃止予定};:[[#operation_examples_message_messagepart]]を参照してください)
+

          
 
IMAPでは、サーバー側で解析されたMIMEメッセージの構造(''BODYSTRUCTURE'')を取得することができます。 これにより、メッセージ全体を取得・パースしなくてもメッセージがどのような構造になっているかを本文の取得前に知ることができます。
IMAPでは、サーバー側で解析されたMIMEメッセージの構造(''BODYSTRUCTURE'')を取得することができます。 これにより、メッセージ全体を取得・パースしなくてもメッセージがどのような構造になっているかを本文の取得前に知ることができます。
 

        

        
 
メッセージ全体の構造は[[ImapMessageInfo.BodyStructureプロパティ>#operation_reference_message_section_bodystructure]]を参照することで取得することができます。 BodyStructureプロパティはインターフェイス型IImapBodyStructure(Smdn.Net.Imap4名前空間)となっていますが、マルチパートの場合はImapMultiPartBodyStructure、シングルパートの場合はImapSinglePartBodyStructureにそれぞれキャストすることができます。
メッセージ全体の構造は[[ImapMessageInfo.BodyStructureプロパティ>#operation_reference_message_section_bodystructure]]を参照することで取得することができます。 BodyStructureプロパティはインターフェイス型IImapBodyStructure(Smdn.Net.Imap4名前空間)となっていますが、マルチパートの場合はImapMultiPartBodyStructure、シングルパートの場合はImapSinglePartBodyStructureにそれぞれキャストすることができます。
2633,7 2496,7
 
|~|>|Name|階層を含まないメールボックスの名前を返します。|
|~|>|Name|階層を含まないメールボックスの名前を返します。|
 
|~|>|ParentMailboxName|上位のメールボックスを返します。 インスタンスが最上位のメールボックスを表す場合、空の文字列を返します。|
|~|>|ParentMailboxName|上位のメールボックスを返します。 インスタンスが最上位のメールボックスを表す場合、空の文字列を返します。|
 
|~|>|MailboxSeparator|メールボックスの階層区切り文字を返します。 メールボックスが階層構造を持たない場合、空の文字列を返します。|
|~|>|MailboxSeparator|メールボックスの階層区切り文字を返します。 メールボックスが階層構造を持たない場合、空の文字列を返します。|
~
|~|>|Url|このメールボックスを表すIMAP URLを返します。|
|~|>|Url|メールボックスを表すIMAP URLを返します。|
 
|~|>|Exists|メールボックスが存在するかどうかを表す値を返します。|
|~|>|Exists|メールボックスが存在するかどうかを表す値を返します。|
 
|~|>|Flags|メールボックスの属性を表すフラグを返します。|
|~|>|Flags|メールボックスの属性を表すフラグを返します。|
 
|~|>|IsUnselectable|メールボックスが選択不可とされているかどうかを表す値を返します。 値がtrueの場合、Open()などのメソッドでメールボックスを選択することはできません。 値がfalseの場合でも、選択できないか選択に失敗する可能性があります。|
|~|>|IsUnselectable|メールボックスが選択不可とされているかどうかを表す値を返します。 値がtrueの場合、Open()などのメソッドでメールボックスを選択することはできません。 値がfalseの場合でも、選択できないか選択に失敗する可能性があります。|
3003,7 2866,7
 
|~ImapMessageInfo|>|Uid|メッセージに割り当てられているUIDを返します。|
|~ImapMessageInfo|>|Uid|メッセージに割り当てられているUIDを返します。|
 
|~|>|Sequence|メッセージに割り当てられている現在の通番を返します。 削除されている場合(IsDeletedがtrueの場合)は0を返します。|
|~|>|Sequence|メッセージに割り当てられている現在の通番を返します。 削除されている場合(IsDeletedがtrueの場合)は0を返します。|
 
|~|>|UidValidity|メッセージを取得した時点でのメールボックスのUIDVALIDITY値を返します。 UIDが永続的でない場合(ImapOpenedMailboxInfo.IsUidPersistentがfalseの場合)などは、0を返します。|
|~|>|UidValidity|メッセージを取得した時点でのメールボックスのUIDVALIDITY値を返します。 UIDが永続的でない場合(ImapOpenedMailboxInfo.IsUidPersistentがfalseの場合)などは、0を返します。|
~
|~|>|Url|このメッセージを表すIMAP URLを返します。|
|~|>|Url|メッセージをIMAP URLを返します。|
 
|~|>|Mailbox|メッセージが属するメールボックスを表すインスタンスを返します。|
|~|>|Mailbox|メッセージが属するメールボックスを表すインスタンスを返します。|
 
|~|>|IsAvailable|メッセージが利用可能かどうかを表す値を返します。 インスタンスの取得元となったメールボックスが既に閉じられている場合、メッセージが移動または削除されている場合は、falseを返します。|
|~|>|IsAvailable|メッセージが利用可能かどうかを表す値を返します。 インスタンスの取得元となったメールボックスが既に閉じられている場合、メッセージが移動または削除されている場合は、falseを返します。|
 
|~|>|IsDeleted|メッセージが完全に削除されているかどうかを表す値を返します。|
|~|>|IsDeleted|メッセージが完全に削除されているかどうかを表す値を返します。|
3015,16 2878,14
 
|~|~|IsSeen|メッセージが既読かどうかを表す値を返します。 \Seenフラグが設定されている場合trueを返します。|
|~|~|IsSeen|メッセージが既読かどうかを表す値を返します。 \Seenフラグが設定されている場合trueを返します。|
 
|~|~|Flags|メッセージに設定されているフラグ・キーワードの一覧を返します。|
|~|~|Flags|メッセージに設定されているフラグ・キーワードの一覧を返します。|
 
|~|~|ModSeq|メッセージに設定されている``mod-sequence``値を返します。|
|~|~|ModSeq|メッセージに設定されている``mod-sequence``値を返します。|
~
|~|~静的属性|MessagePart|メッセージに含まれるメッセージパートの操作・情報の取得を行うための[[ImapMessagePartInfo>#operation_reference_messagepart]]を返します。|
|~|~静的属性|IsMultiPart|メッセージがマルチパート形式のメッセージかどうかを表す値を返します。|
~
|~|~|IsMultiPart|メッセージがマルチパート形式のメッセージかどうかを表す値を返します。 MessagePart.IsMultPartプロパティと同じ値を返します。|
|~|~|MediaType|メッセージのメディアタイプを返します。|
+
|~|~|HasEncapsulatedMessage|メッセージが他のメッセージを内包している(``message/rfc822``)かどうかを表す値を返します。 MessagePart.HasEncapsulatedMessageプロパティと同じ値を返します。|
+
|~|~|MediaType|メッセージのメディアタイプを返します。 MessagePart.ContentTypeプロパティと同じ値を返します。|
 
|~|~|Length|メッセージのサイズをバイト単位で返します。|
|~|~|Length|メッセージのサイズをバイト単位で返します。|
 
|~|~|Envelope|メッセージのエンベロープを表すImapEnvelopeのインスタンスを返します。|
|~|~|Envelope|メッセージのエンベロープを表すImapEnvelopeのインスタンスを返します。|
 
|~|~|EnvelopeDate|メッセージのDateヘッダをパースした値をNullable<DateTimeOffset>で返します。 パースに失敗した場合は、DateTimeOffsetのデフォルト値を返します。 Dateヘッダがない場合などは、nullを返します。|
|~|~|EnvelopeDate|メッセージのDateヘッダをパースした値をNullable<DateTimeOffset>で返します。 パースに失敗した場合は、DateTimeOffsetのデフォルト値を返します。 Dateヘッダがない場合などは、nullを返します。|
 
|~|~|EnvelopeSubject|メッセージのSubjectヘッダをデコードした値をstringで返します。 デコードに失敗した場合は、デコードされていない状態で返します。 Subjectヘッダがない場合などは、nullを返します。|
|~|~|EnvelopeSubject|メッセージのSubjectヘッダをデコードした値をstringで返します。 デコードに失敗した場合は、デコードされていない状態で返します。 Subjectヘッダがない場合などは、nullを返します。|
 
|~|~|InternalDate|メッセージがメールボックスに追加された(受信もしくはアップロードした)日時をDateTimeOffsetで返します。|
|~|~|InternalDate|メッセージがメールボックスに追加された(受信もしくはアップロードした)日時をDateTimeOffsetで返します。|
~
|~|~|BodyStructure|(&color(red){廃止予定};:MessagePartプロパティを使用してください) メッセージの構造(BODYSTRUCTURE)を表すIImapBodyStructureのインスタンスを返します。|
|~|~|BodyStructure|メッセージの構造(BODYSTRUCTURE)を表すIImapBodyStructureのインスタンスを返します。|
 
|~クラス|>|~プロパティ|~解説|f
|~クラス|>|~プロパティ|~解説|f
 

        

        
 
:動的属性を表すプロパティ|メッセージ取得時にImapMessageFetchAttributeOptionsで動的属性を取得するように指定しなかった場合、プロパティの値を参照する際、コマンドを発行してから結果を返します。
:動的属性を表すプロパティ|メッセージ取得時にImapMessageFetchAttributeOptionsで動的属性を取得するように指定しなかった場合、プロパティの値を参照する際、コマンドを発行してから結果を返します。
3112,9 2973,8
 
一方Download()メソッドはメッセージ全文をメモリ上にダウンロードしたStreamを返します。 メソッド呼び出しが完了した時点でメッセージ全文がダウンロードされています。 Download()メソッドが返すStreamはシーク操作および書き込み操作をサポートします。
一方Download()メソッドはメッセージ全文をメモリ上にダウンロードしたStreamを返します。 メソッド呼び出しが完了した時点でメッセージ全文がダウンロードされています。 Download()メソッドが返すStreamはシーク操作および書き込み操作をサポートします。
 
:OpenRead()/OpenText()が返すStream/StreamReaderのクローズ|OpenRead()/OpenText()メソッドによって取得したStream/StreamReaderに対してClose()メソッドを呼び出さない限り、ImapClient.IsBusyはtrueのままとなり、他の操作を開始しようとしてもInvalidOperationExceptionをスローします。 OpenRead()/OpenText()メソッドを使用する場合は、次の操作を開始するまでに取得したStream/StreamReaderのClose()メソッドを呼び出すようにしてください。 また、読み込み処理を行いながら他の操作を行いたい場合は、Download()メソッドで取得したStreamを使用するなどしてください。
:OpenRead()/OpenText()が返すStream/StreamReaderのクローズ|OpenRead()/OpenText()メソッドによって取得したStream/StreamReaderに対してClose()メソッドを呼び出さない限り、ImapClient.IsBusyはtrueのままとなり、他の操作を開始しようとしてもInvalidOperationExceptionをスローします。 OpenRead()/OpenText()メソッドを使用する場合は、次の操作を開始するまでに取得したStream/StreamReaderのClose()メソッドを呼び出すようにしてください。 また、読み込み処理を行いながら他の操作を行いたい場合は、Download()メソッドで取得したStreamを使用するなどしてください。
 
:ReadLines()が返すIEnumerable<string>|ReadLines()は遅延実行するIEnumerable<string>を返します。 列挙操作が完了するまではImapClient.IsBusyはtrueのままとなり、他の操作を開始しようとしてもInvalidOperationExceptionをスローします。 列挙中に他の操作を行いたい場合は、遅延実行を行わないReadAllLines()メソッドを使用してください。
:ReadLines()が返すIEnumerable<string>|ReadLines()は遅延実行するIEnumerable<string>を返します。 列挙操作が完了するまではImapClient.IsBusyはtrueのままとなり、他の操作を開始しようとしてもInvalidOperationExceptionをスローします。 列挙中に他の操作を行いたい場合は、遅延実行を行わないReadAllLines()メソッドを使用してください。
~
:非同期バージョンのメソッド|OpenReadAsync()など名前がAsyncで終わるメソッドは非同期バージョンのメソッドです。 非同期的に動作する以外は同期バージョンと同じです。 非同期バージョンのメソッドを使う際の注意点は[[#async_operations]]を参照してください。
:非同期バージョンのメソッド|OpenReadAsync()など名前がAsyncで終わるメソッドは非同期バージョンのメソッドです。 基本的な動作は同期バージョンと同じです。 非同期バージョンのメソッドを使う際の注意点は[[#async_operations]]を参照してください。
~
:セクションの指定|(&color(red){廃止予定};:ImapMessagePartInfoクラスのメソッドを使用してください)
:セクションの指定|これらすべてのメソッドは、引数でセクション番号あるいはセクションを表すBODYSTRUCTUREのIImapBodyStructureを指定することができるオーバーロードが用意されています。 これらのオーバーロードでは、メッセージ本文全体ではなく指定したセクション部分だけを取得します。 詳細については[[#operation_reference_message_section_bodystructure]]で解説します。
+
これらすべてのメソッドは、引数でセクション番号あるいはセクションを表すBODYSTRUCTUREのIImapBodyStructureを指定することができるオーバーロードが用意されています。 これらのオーバーロードでは、メッセージ本文全体ではなく指定したセクション部分だけを取得します。 詳細については[[#operation_reference_message_section_bodystructure]]で解説します。
 
:メッセージ本文の取得オプション(ImapMessageFetchBodyOptions)|これらのメソッドには、ImapMessageFetchBodyOptionsを引数にとるバージョンのオーバーロードを用意してあります。 ImapMessageFetchBodyOptionsを指定することで、メッセージ本文取得時の動作を指定することができます。 以下の値を組み合わせて指定できます。
:メッセージ本文の取得オプション(ImapMessageFetchBodyOptions)|これらのメソッドには、ImapMessageFetchBodyOptionsを引数にとるバージョンのオーバーロードを用意してあります。 ImapMessageFetchBodyOptionsを指定することで、メッセージ本文取得時の動作を指定することができます。 以下の値を組み合わせて指定できます。
 
::SetSeen|メッセージ本文の取得と同時に、メッセージを既読にします。 このオプションを指定しない場合は、メッセージの既読/未読の状態をそのままにします。
::SetSeen|メッセージ本文の取得と同時に、メッセージを既読にします。 このオプションを指定しない場合は、メッセージの既読/未読の状態をそのままにします。
 
::DecodeContent|メソッドの引数でIImapBodyStructureを指定した場合のみ有効。 BODYSTRUCTUREからセクションのエンコーディング・文字コードを取得し、メッセージ本文をデコードします。 このオプションを指定しない場合は、セクションをデコードせずに取得します。
::DecodeContent|メソッドの引数でIImapBodyStructureを指定した場合のみ有効。 BODYSTRUCTUREからセクションのエンコーディング・文字コードを取得し、メッセージ本文をデコードします。 このオプションを指定しない場合は、セクションをデコードせずに取得します。
3123,33 2983,7
 
::Default|オプションのデフォルト値です。 上記オプションのいずれも指定しない場合と同値です。
::Default|オプションのデフォルト値です。 上記オプションのいずれも指定しない場合と同値です。
 

        

        
 

        

        
+
****メッセージパートの取得・検索 [#operation_reference_message_messagepart]
+
以下はメッセージ内のメッセージパートの取得を行うプロパティとメソッドです。
+

          
+
|*メッセージパートの取得を行うプロパティ
+
|~クラス|~プロパティ|~解説|h
+
|~ImapMessageInfo|MessagePart|メッセージ全体のメッセージパート情報を表す[[ImapMessagePartInfo>#operation_reference_messagepart]]を返します。|
+

          
+
|*メッセージパートに関するメソッド
+
|~クラス|~プロパティ|~解説|h
+
|~ImapMessageInfo|{{
+
GetMessagePart(string)
+
GetMessagePart(params int[])
+
GetMessagePart(IEnumerable<int>)
+
}}|指定されたメッセージパートを表す[[ImapMessagePartInfo>#operation_reference_messagepart]]を取得します。 空の文字列・空の配列・``null``を指定した場合はImapMessageInfo.MessagePartと同じ値を返します。 該当するメッセージパートが無い場合は``null``を返します。|
+
|~|FindAllMessageParts(Predicate<ImapMessagePartInfo>)|指定された条件に一致するすべてのメッセージパートを格納したList<ImapMessagePartInfo>を取得します。 該当するメッセージパートが無い場合は空のリストを返します。|
+
|~|FindMessagePart(Predicate<ImapMessagePartInfo>)|指定された条件に一致する最初のメッセージパートを取得します。 該当するメッセージパートが無い場合は``null``を返します。|
+
|~|FindAllMessageParts(Smdn.MimeType)|``Content-Type``が指定されたMimeTypeと一致するすべてのメッセージパートを格納したList<ImapMessagePartInfo>を取得します。 該当するメッセージパートが無い場合は空のリストを返します。|
+
|~|FindMessagePart(Smdn.MimeType)|``Content-Type``が指定されたMimeTypeと一致する最初のメッセージパートを取得します。 該当するメッセージパートが無い場合は``null``を返します。|
+

          
+
:上記すべてのプロパティ・メソッド|ImapMessageFetchAttributeOptions.StaticAttributesを指定してメッセージの動的属性をしていない場合は、コマンドを発行してから結果を返します。
+
:ImapMessageInfo.GetMessagePart()|文字列``"1.2.3"``の指定と数値``{1,2,3}``の指定は等価です。 これらはどちらも``"1.2.3"``で表されるメッセージパートを表します。
+
:ImapMessageInfo.FindMessagePart()およびImapMessageInfo.FindAllMessageParts()|引数として[[ImapMessagePartInfo.Predicatesクラスに定義済みのメソッド>#operation_reference_messagepart_find]]を指定することができます。
+

          
+

          
 
****メッセージのセクションと構造(BODYSTRUCTURE)に関する操作 [#operation_reference_message_section_bodystructure]
****メッセージのセクションと構造(BODYSTRUCTURE)に関する操作 [#operation_reference_message_section_bodystructure]
+
(&color(red){廃止予定};:[[ImapMessageInfo.GetMessagePart()などのメソッド>#operation_reference_message_messagepart]]および[[ImapMessagePartInfoクラス>#operation_reference_messagepart]]を使用してください)
+

          
 
以下はメッセージのセクションと構造に関する操作を行うプロパティとメソッドです。
以下はメッセージのセクションと構造に関する操作を行うプロパティとメソッドです。
 

        

        
 
|*メッセージのセクションと構造に関するプロパティ
|*メッセージのセクションと構造に関するプロパティ
3481,163 3315,6
 
:追加先のメールボックス|選択できないメールボックス(IsUnselectableがtrue)の場合や、既に削除されているメールボックス(Existがfalse)の場合は、ImapProtocolViolationExceptionをスローします。
:追加先のメールボックス|選択できないメールボックス(IsUnselectableがtrue)の場合や、既に削除されているメールボックス(Existがfalse)の場合は、ImapProtocolViolationExceptionをスローします。
 
メールボックスが存在しない場合(サーバがTRYCREATEレスポンスコードを返した場合)は、ImapMailboxNotFoundExceptionをスローします。
メールボックスが存在しない場合(サーバがTRYCREATEレスポンスコードを返した場合)は、ImapMailboxNotFoundExceptionをスローします。
 

        

        
+

          
+

          
+
***メッセージパートに対する操作 [#operation_reference_messagepart]
+
以下はメッセージ内の特定のメッセージパートに対する操作を行うメソッドです。
+

          
+
****メッセージパート情報の取得 [#operation_reference_messagepart_structure]
+
以下はメッセージパート情報の取得を行うプロパティとメソッドです。
+

          
+
|*メッセージパート情報の取得を行うプロパティ
+
|~クラス|>|~プロパティ|~解説|h
+
|~ImapMessagePartInfo|>|Message|このメッセージパートの取得元となるImapMessageInfoを返します。|
+
|~|>|Url|このメッセージパートを表すIMAP URLを返します。|
+
|~|>|Specifier|メッセージ内においてこのメッセージパートを表す文字列形式の指定子を返します。|
+
|~|~メッセージパートの構造|ParentPart|このメッセージパートを内包しているメッセージパートを返します。 最上位のメッセージパートの場合は``null``を返します。|
+
|~|~|IsRootPart|このメッセージパートが最上位のメッセージパートかどうかを表す値を返します。|
+
|~|~|IsMultiPart|メッセージパートがマルチパート形式かどうかを表す値を返します。|
+
|~|~|NestedMessageParts|メッセージパートがマルチパート形式の場合、内包している子メッセージパートを格納した読み取り専用のリストを返します。 マルチパート形式以外の場合は空のリストを返します。|
+
|~|~|HasEncapsulatedMessage|メッセージパートがカプセル化されたメッセージを内包している(``message/rfc822``)かどうかを表す値を返します。|
+
|~|~|EncapsulatedMessagePart|カプセル化されたメッセージを表すImapMessagePartInfoを返します。 カプセル化されたメッセージを持たない場合は``null``を返します。|
+
|~|~|EncapsulatedMessageEnvelope|カプセル化されたメッセージのエンベロープを表すImapEnvelopeを返します。 カプセル化されたメッセージを持たない場合は``null``を返します。|
+
|~|~|Length|メッセージパートのサイズをバイト単位で返します。 メッセージパートがマルチパート形式の場合は``0``を返します。|
+
|~|~|LineCount|メッセージパート本文、またはカプセル化されたメッセージの行数を返します。 非テキストパートやマルチパート形式の場合は``0``を返します。|
+
|~|~メッセージパートのヘッダ|ContentType|メッセージパートの``Content-Type``ヘッダの値を返します。|
+
|~|~|ContentTypeParameters|メッセージパートの``Content-Type``ヘッダのパラメータを格納したディクショナリを返します。 パラメータが無い場合・取得できない場合は空のディクショナリを返します。|
+
|~|~|ContentTransferEncoding|メッセージパートの``Content-Transfer-Encoding``ヘッダの値を返します。 ヘッダが無い場合・取得できない場合は``null``を返します。|
+
|~|~|ContentTransferEncodingMethod|メッセージパートの``Content-Transfer-Encoding``ヘッダの値を列挙体の値で返します。 ヘッダが無い場合・取得できない場合は``ContentTransferEncodingMethod.Unknown``を返します。|
+
|~|~|ContentDisposition|メッセージパートの``Content-Disposition``ヘッダの値を返します。 ヘッダが無い場合・取得できない場合は``null``を返します。|
+
|~|~|ContentDispositionParameters|メッセージパートの``Content-Disposition``ヘッダのパラメータを格納したディクショナリを返します。 パラメータが無い場合・取得できない場合は空のディクショナリを返します。|
+
|~|~|IsDispositionAttachment|メッセージパートの``Content-Disposition``ヘッダの値が``attachment``の場合にtrueを返します。 それ以外の値の場合・ヘッダが無い場合・取得できない場合は``false``を返します。|
+
|~|~|IsDispositionInline|メッセージパートの``Content-Disposition``ヘッダの値が``inline``の場合にtrueを返します。 それ以外の値の場合・ヘッダが無い場合・取得できない場合は``false``を返します。
+
|~|~|ContentLanguages|メッセージパートの``Content-Language``ヘッダの値を格納したリストを返します。 ヘッダが無い場合・取得できない場合は空のリストを返します。|
+
|~|~|ContentLocation|メッセージパートの``Content-Location``ヘッダの値を返します。 ヘッダが無い場合・取得できない場合は``null``を返します。|
+
|~|~|ContentID|メッセージパートの``Content-ID``ヘッダの値を返します。 ヘッダが無い場合・取得できない場合は``null``を返します。|
+
|~|~|ContentDescription|メッセージパートの``Content-Description``ヘッダの値を返します。 ヘッダが無い場合・取得できない場合は``null``を返します。|
+
|~|~|ContentMD5|メッセージパートの``Content-MD5``ヘッダの値を返します。 ヘッダが無い場合・取得できない場合は``null``を返します。|
+

          
+
|*メッセージパート情報の取得を行うメソッド
+
|~クラス|~メソッド|~解説|h
+
|~ImapMessagePartInfo|{{
+
GetContentFileName()
+
GetContentFileName(EncodingSelectionCallback, bool)
+
}}|メッセージパートに与えられているファイル名を取得しデコードした状態で返します。 このメソッドは、``Content-Disposition``ヘッダの``filename``パラメータ、``Content-Type``ヘッダの``name``パラメータを順に参照し、値が設定されている場合はその値をデコードした結果を返します。 ヘッダが無い場合・パラメータが指定されていない場合・取得できない場合は``null``を返します。|
+

          
+
****メッセージパート構造の走査・メッセージパートの取得 [#operation_reference_messagepart_find]
+
以下はメッセージパート内の構造の走査や入れ子になっているメッセージパートを取得するメソッドです。
+

          
+
|*メッセージパート構造の走査・取得に関するメソッド
+
|~クラス|~メソッド|~解説|h
+
|~ImapMessagePartInfo|{{
+
Traverse(Action<ImapMessagePartInfo>)
+
Traverse(bool, Action<ImapMessagePartInfo>)
+
}}|メッセージパート内の構造を走査し、各メッセージパートに対して指定されたコールバックメソッドを呼び出します。&br;オプションでメソッドを呼び出したImapMessagePartInfo自身も結果に含めるかどうかを指定できます。|
+
|~|{{
+
Traverse(Action<ImapMessagePartInfo>, Action<ImapMessagePartInfo>)
+
Traverse(bool, Action<ImapMessagePartInfo>, Action<ImapMessagePartInfo>)
+
}}|メッセージパート内の構造を走査し、各メッセージパートに対して、子構造内に入る際と出る際それぞれのタイミングで指定されたコールバックメソッドを呼び出します。&br;オプションでメソッドを呼び出したImapMessagePartInfo自身も結果に含めるかどうかを指定できます。|
+
|~|{{
+
Flatten()
+
Flatten(bool)
+
}}|メッセージパート内の構造を走査し、すべてのメッセージパートを格納したList<ImapMessagePartInfo>を取得します。&br;オプションでメソッドを呼び出したImapMessagePartInfo自身も結果に含めるかどうかを指定できます。|
+
|~|FindAll(Predicate<ImapMessagePartInfo> match)|メッセージパート内の構造を走査し、指定された条件に一致するすべてのメッセージパートを格納したList<ImapMessagePartInfo>を取得します。 該当するメッセージパートが無い場合は空のリストを返します。|
+
|~|Find(Predicate<ImapMessagePartInfo> match)|メッセージパート内の構造を走査し、指定された条件に一致する最初のメッセージパートを取得します。 該当するメッセージパートが無い場合は``null``を返します。|
+

          
+
Findメソッド・FindAllメソッドでは、以下に用意している定義済みのメソッドを引数として使用することができます。
+

          
+
|*メッセージパート構造の検索条件
+
|~メソッド|~解説|h
+
|ImapMessagePartInfo.Predicates.IsMultiPart|マルチパート形式のメッセージパートの場合にtrueを返します|
+
|ImapMessagePartInfo.Predicates.HasEncapsulatedMessagePart|カプセル化されたメッセージを内包する場合(Content-Typeが``message/rfc822``の場合)にtrueを返します|
+
|ImapMessagePartInfo.Predicates.IsEncapsulatedMessagePart|カプセル化されたメッセージのパートの場合(Content-Typeが``message/rfc822``のメッセージパートに格納されているメッセージパートの場合)にtrueを返します|
+
|ImapMessagePartInfo.Predicates.IsTextPart|Content-Typeが``text/*``の場合にtrueを返します|
+
|ImapMessagePartInfo.Predicates.IsPlainTextPart|Content-Typeが``text/plain``の場合にtrueを返します|
+
|ImapMessagePartInfo.Predicates.IsImagePart|Content-Typeが``image/*``の場合にtrueを返します|
+
|ImapMessagePartInfo.Predicates.IsInlinePart|Content-Dispositionが``inline``の場合にtrueを返します|
+
|ImapMessagePartInfo.Predicates.IsAttachmentPart|Content-Dispositionが``attachment``の場合にtrueを返します|
+
|ImapMessagePartInfo.Predicates.SeemsToBeAttachmentPart|Content-Dispositionが``attachment``の場合、もしくは添付ファイルと推測されるメッセージパートの場合にtrueを返します|
+

          
+

          
+
****メッセージパートの内容の取得 [#operation_reference_messagepart_readbody]
+
以下はメッセージパートの内容の取得に関するメソッドです。 詳細な動作については、[[ImapMessageInfoクラスの同名メソッド>#operation_reference_message_readbody]]を参照してください。
+

          
+
|*メッセージパートの内容の取得に関するメソッド
+
|~クラス|~メソッド|~解説|~対応するIMAPコマンド|h
+
|~ImapMessagePartInfo|{{
+
OpenRead()
+
OpenReadAsync()
+
および類似のオーバーロード
+
}}|メッセージ本文を読み込むためのStreamを取得します。|FETCH|
+
|~|{{
+
OpenText()
+
OpenTextAsync()
+
および類似のオーバーロード
+
}}|メッセージ本文を読み込むためのStreamReaderを取得します。|FETCH|
+
|~|{{
+
ReadAllBytes()
+
ReadAllBytesAsync()
+
および類似のオーバーロード
+
}}|メッセージ本文をbyte[]で取得します。|FETCH|
+
|~|{{
+
ReadAllLines()
+
ReadAllLinesAsync()
+
および類似のオーバーロード
+
}}|メッセージ本文をstring[]で取得します。|FETCH|
+
|~|{{
+
ReadAllText()
+
ReadAllTextAsync()
+
および類似のオーバーロード
+
}}|メッセージ本文をstringで取得します。|FETCH|
+
|~|{{
+
ReadLines()
+
および類似のオーバーロード
+
}}|メッセージ本文をIEnumerable<string>で取得します。|FETCH|
+
|~|{{
+
ReadAs<TResult>(Converter<Stream, TResult>)
+
ReadAsAsync<TResult>(Converter<Stream, TResult>)
+
および類似のオーバーロード
+
}}|メッセージ本文を読み込むためのStreamを取得し、指定されたConverter<Stream, TResult>で変換された結果を取得します。|FETCH|
+
|~|{{
+
ReadAs<T, TResult>
+
(Func<Stream, T, TResult>, T)
+
ReadAs<T1, T2, TResult>
+
(Func<Stream, T1, T2,TResult>, T1, T2)
+
ReadAs<T1, T2, T3, TResult>
+
(Func<Stream, T1, T2, T3, TResult>, T1, T2, T3)
+
ReadAs<T1, T2, T3, T4, TResult>
+
(Func<Stream, T1, T2, T3, T4, TResult>, T1, T2, T3, T4)
+
および類似のオーバーロード
+
}}|メッセージ本文を読み込むためのStreamを取得し、指定されたFunc<Stream, T, TResult>~Func<Stream, T1, T2, T3, T4, TResult>で変換された結果を取得します。|FETCH|
+
|~|{{
+
ReadAs<TResult>(Converter<StreamReader, TResult>)
+
ReadAsAsync<TResult>(Converter<StreamReader, TResult>)
+
および類似のオーバーロード
+
}}|メッセージ本文を読み込むためのStreamReaderを取得し、指定されたConverter<StreamReader, TResult>で変換された結果を取得します。|FETCH|
+
|~|{{
+
Save(string)
+
SaveAsync(string)
+
および類似のオーバーロード
+
}}|メッセージ本文を指定されたファイルに保存します。|FETCH|
+
|~|{{
+
WriteTo(Stream)
+
WriteToAsync(Stream)
+
および類似のオーバーロード
+
}}|メッセージ本文を指定されたStreamに書き込みます。|FETCH|
+
|~|{{
+
WriteTo(BinaryWriter)
+
WriteToAsync(BinaryWriter)
+
および類似のオーバーロード
+
}}|メッセージ本文を指定されたBinaryWriterに書き込みます。|FETCH|
+
|~|{{
+
Download()
+
DownloadAsync()
+
および類似のオーバーロード
+
}}|メッセージ本文をメモリ上にダウンロードしたStreamを取得します。|FETCH|
+
|~クラス|~メソッド|~解説|~対応するIMAPコマンド|f
+

          
+

          
+

          
 
***その他のIMAPの操作 [#operation_reference_misc]
***その他のIMAPの操作 [#operation_reference_misc]
 

        

        
 
****サーバ情報の取得 [#operation_reference_misc_serverinfo]
****サーバ情報の取得 [#operation_reference_misc_serverinfo]

works/libs/Smdn.Formats.Mime/releases/index.wiki.txt

current previous
7,19 7,6
 
以下のバージョンはすべて[[MIT X11ライセンス>http://sourceforge.jp/projects/opensource/wiki/licenses/MIT_license]]でのリリースとなります。
以下のバージョンはすべて[[MIT X11ライセンス>http://sourceforge.jp/projects/opensource/wiki/licenses/MIT_license]]でのリリースとなります。
 

        

        
 
|~バージョン|>|~パッケージ|h
|~バージョン|>|~パッケージ|h
+
|~[[0.38 (2014-08-01)>#changes_v0.38]]|~ソースコード|{{
+
${smdncms:distfilelink,../Smdn.Formats.Mime-0.38.tar.bz2}
+
}}|
+
|~|~DLL|{{
+
${smdncms:distfilelink,../Smdn.Formats.Mime-0.38-netfx4.5.zip,.NET 4.5}
+
${smdncms:distfilelink,../Smdn.Formats.Mime-0.38-netfx4.0.zip,.NET 4}
+
${smdncms:distfilelink,../Smdn.Formats.Mime-0.38-netfx3.5.zip,.NET 3.5}
+
}}|
+
|~|~DLL&br;([[単一アセンブリ版>#releases_combined]])|{{
+
${smdncms:distfilelink,../Smdn.Formats.Mime-0.38-netfx4.5-combined.zip,.NET 4.5}
+
${smdncms:distfilelink,../Smdn.Formats.Mime-0.38-netfx4.0-combined.zip,.NET 4}
+
${smdncms:distfilelink,../Smdn.Formats.Mime-0.38-netfx3.5-combined.zip,.NET 3.5}
+
}}|
 
|~[[0.37 (2014-05-07)>#changes_v0.37]]|~ソースコード|{{
|~[[0.37 (2014-05-07)>#changes_v0.37]]|~ソースコード|{{
 
${smdncms:distfilelink,../Smdn.Formats.Mime-0.37.tar.bz2}
${smdncms:distfilelink,../Smdn.Formats.Mime-0.37.tar.bz2}
 
}}|
}}|
188,14 175,6
 
コンパイラにMono mcsを使用、オプションに/debug- /optimize+ /define:TRACEを指定してビルドしています。
コンパイラにMono mcsを使用、オプションに/debug- /optimize+ /define:TRACEを指定してビルドしています。
 

        

        
 
*変更履歴 [#changes]
*変更履歴 [#changes]
+
**0.38 (2014-08-01) [#changes_v0.38]
+
-機能追加
+
--Mail.GetHeaderValueOf()について、ヘッダの値を取得する際にコメントを削除してどうかを指定できるオーバーロードを追加
+
-修正・改善
+
--アセンブリの製品名(AssemblyProductAttribute)およびバージョン情報(AssemblyInformationalVersionAttribute)にバージョン番号と対象フレームワークを含むパッケージ名の情報を埋め込むようにした
+
--DateヘッダにJSTやGMTなどのタイムゾーン名称が含まれる値が設定されている場合でもMail.Dateプロパティが正しい値を返すように修正
+
--添付ファイルの検出処理を改善
+

          
 
**0.37 (2014-05-07) [#changes_v0.37]
**0.37 (2014-05-07) [#changes_v0.37]
 
-修正・改善
-修正・改善
 
--Mail.AttachedFilesをAttachedFile[]からReadOnlyCollection<AttachedFile>に変更
--Mail.AttachedFilesをAttachedFile[]からReadOnlyCollection<AttachedFile>に変更

works/libs/Smdn.Formats.Mime/index.wiki.txt

current previous
8,7 8,7
 
*ダウンロード
*ダウンロード
 
本ライブラリは[[MIT X11ライセンス:http://sourceforge.jp/projects/opensource/wiki/licenses/MIT_license]]でのリリースとなります。
本ライブラリは[[MIT X11ライセンス:http://sourceforge.jp/projects/opensource/wiki/licenses/MIT_license]]でのリリースとなります。
 

        

        
~
:最新版 (ソースコード)|${smdncms:distfilelink,Smdn.Formats.Mime-0.38.tar.bz2}
:最新版 (ソースコード)|${smdncms:distfilelink,Smdn.Formats.Mime-0.37.tar.bz2}
 
:開発版|[[http://svn.smdn.jp/anonsvn/libs/Smdn/trunk/]]よりチェックアウトできます
:開発版|[[http://svn.smdn.jp/anonsvn/libs/Smdn/trunk/]]よりチェックアウトできます
 
:ビルド済みパッケージ・過去のバージョン|[[works/libs/Smdn.Formats.Mime/releases]]をご覧ください
:ビルド済みパッケージ・過去のバージョン|[[works/libs/Smdn.Formats.Mime/releases]]をご覧ください
 

        

        

works/tools/junk/SimpleMailer/index.wiki.txt

current previous
20,13 20,6
 
-開発版
-開発版
 
--[[http://svn.smdn.jp/anonsvn/tools/SimpleMailer/trunk/]]よりチェックアウトできます
--[[http://svn.smdn.jp/anonsvn/tools/SimpleMailer/trunk/]]よりチェックアウトできます
 
-1.1x
-1.1x
+
--${smdncms:distfilelink,SimpleMailer-1.11.tar.bz2}
+
---下記ライブラリのソースを同梱しています
+
----[[works/libs/Smdn.Net.Imap4.Client]] 1.11
+
----[[works/libs/Smdn.Net.Pop3.Client]] 1.25
+
----[[works/libs/Smdn.Security.Authentication.Sasl]] 1.00
+
----[[works/libs/Smdn.Formats.Mime]] 0.38
+
----[[works/libs/Smdn.Formats.Ini]] 0.22
 
--${smdncms:distfilelink,SimpleMailer-1.10.tar.bz2}
--${smdncms:distfilelink,SimpleMailer-1.10.tar.bz2}
 
---下記ライブラリのソースを同梱しています
---下記ライブラリのソースを同梱しています
 
----[[works/libs/Smdn.Net.Imap4.Client]] 1.10
----[[works/libs/Smdn.Net.Imap4.Client]] 1.10
152,10 145,6
 

        

        
 
*変更履歴
*変更履歴
 

        

        
+
**1.11 (2014-08-01)
+
-修正・改善
+
--ライブラリのインターフェイス変更にあわせて実装を修正
+

          
 
**1.10 (2014-07-19)
**1.10 (2014-07-19)
 
-機能追加
-機能追加
 
--メッセージ本文をプレビューする際のフォントを設定ファイルで指定できるようにした
--メッセージ本文をプレビューする際のフォントを設定ファイルで指定できるようにした