2014-08-15T15:00:05の更新内容

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.12.tar.bz2}
+
---下記ライブラリのソースを同梱しています
+
----[[works/libs/Smdn.Net.Imap4.Client]] 1.12
+
----[[works/libs/Smdn.Net.Pop3.Client]] 1.26
+
----[[works/libs/Smdn.Security.Authentication.Sasl]] 1.00
+
----[[works/libs/Smdn.Formats.Mime]] 0.39
+
----[[works/libs/Smdn.Formats.Ini]] 0.22
 
--${smdncms:distfilelink,SimpleMailer-1.11.tar.bz2}
--${smdncms:distfilelink,SimpleMailer-1.11.tar.bz2}
 
---下記ライブラリのソースを同梱しています
---下記ライブラリのソースを同梱しています
 
----[[works/libs/Smdn.Net.Imap4.Client]] 1.11
----[[works/libs/Smdn.Net.Imap4.Client]] 1.11
159,9 152,6
 

        

        
 
*変更履歴
*変更履歴
 

        

        
+
**1.12 (2014-08-15)
+
-ライブラリの更新のみ、本体部分は変更なし
+

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

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

current previous
19,16 19,6
 
#googleadunit
#googleadunit
 
-開発版
-開発版
 
--[[http://svn.smdn.jp/anonsvn/tools/MRAConnector/trunk/]]よりチェックアウトできます
--[[http://svn.smdn.jp/anonsvn/tools/MRAConnector/trunk/]]よりチェックアウトできます
+
-1.1x
+
--パッケージ
+
---${smdncms:distfilelink,MRAConnector-1.12.zip}
+
--ソースコード
+
---${smdncms:distfilelink,MRAConnector-1.12.tar.bz2}
+
----下記ライブラリのソースを同梱しています
+
-----[[works/libs/Smdn.Net.Imap4.Client]] 1.12
+
-----[[works/libs/Smdn.Net.Pop3.Client]] 1.21
+
-----[[works/libs/Smdn.Security.Authentication.Sasl]] 1.00
+
-----[[works/libs/Smdn.Formats.Ini]] 0.22
 
-1.0x
-1.0x
 
--パッケージ
--パッケージ
 
---${smdncms:distfilelink,MRAConnector-1.03.zip}
---${smdncms:distfilelink,MRAConnector-1.03.zip}
144,11 134,6
 
不具合の報告、ライブラリに対する要望や提案、使い方の質問などは[[掲示板>misc/forum/libs]]へどうぞ。
不具合の報告、ライブラリに対する要望や提案、使い方の質問などは[[掲示板>misc/forum/libs]]へどうぞ。
 

        

        
 
*変更履歴
*変更履歴
+
**1.12 (2014-08-15)
+
-修正・改善
+
--ライブラリのインターフェイス変更にあわせて実装を修正
+
--接続の中断処理を簡略化
+

          
 
**1.03 (2014-05-24)
**1.03 (2014-05-24)
 
-機能追加
-機能追加
 
--APOPおよびPOP標準ログインを個別に無効化するためのチェックボックスを追加
--APOPおよびPOP標準ログインを個別に無効化するためのチェックボックスを追加

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

        

        
 
*変更履歴 [#changes]
*変更履歴 [#changes]
+
**1.12 (2014-08-15) [#changes_v1.12]
+
主に軽微な機能追加と動作変更。
+

          
+
-機能追加
+
--ImapEnvelope.GetDecodedDate()を追加、DateTimeOffsetにデコードしたdateを取得できるようにした
+
--ImapClient
+
---ImapMessageFetchBodyOptions.OmitHeaderを追加、ImapMessageInfoクラスおよびImapMessageInfo.MessagePartプロパティでメッセージ本文の取得時にヘッダを除いたボディ部分のみを取得できるようにした
+
---ImapMessagePartInfo.OpenText[Async], ReadAllLines[Async], ReadAllText[Async]などのメソッドにEncodingSelectionCallbackを指定できるオーバーロードを追加、BODYSTRUCTUREの文字セットが不正・非対応の場合・取得できなかった場合のフォールバックを指定できるようにした
+
---ImapMessagePartInfo.GetHeader[Async](), GetRawHeader[Async]()を追加
+
---ImapMessagePartInfo.ContentTypeCharsetを追加
+
---ImapMessagePartInfo.IsEncapsulatedMessagePartを追加
+
---ImapMessagePartInfo.NestLevelを追加
+
---ImapOpenedMailboxInfo.GetMessageFirstUnseen[Async]()を追加
+
---ImapClient.Connect()にCancellationTokenを指定できるバージョンを追加
+
-修正・改善
+
--コマンド送信が完了した時点で、コマンド内容のバッファを削除するようにした
+
--SASL認証の進行中にCancellationTokenによる中断要求があった場合は認証処理を中断するようにした
+
--ImapEnvelope.GetDecodedSubject()について、subjectが空の文字列の場合はnullを返すように動作を変更
+
--ImapClient
+
---ImapMessageInfoクラスのメソッドでImapMessageFetchBodyOptions.DecodeContentを指定した場合はNotSupportedExceptionをスローするように動作を変更
+
---ImapPartialMessageInfoクラスのメソッドでImapPartialRangeとImapMessageFetchBodyOptions.DecodeContentを同時に指定した場合はNotSupportedExceptionをスローするように動作を変更
+
---ImapMessageInfo.EnvelopeDateについて、空白や改行・コメントを含む日時の場合でも正しいデコード結果を返すように改善
+
---ImapMessageInfo.EnvelopeDateおよびEnvelopeSubjectについて、値をキャッシュせず呼び出しの都度デコードを行い、結果を返すようにした
+
---ImapMessageInfo.OpenRead(), Save(), WriteTo()などのメソッドのオーバーロードのうち、string sectionを引数にとるバージョンを廃止、使用している場合はエラーとするようにした
+
---ImapMessageInfo.OpenRead(), OpenText()で開いたStream/StreamReaderについて、Flushメソッドを呼び出してもNotSupportedExceptionをスローしないように修正
+

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

        

        

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.12.tar.bz2}
${smdncms:distfilelink,Smdn.Net.Imap4.Client-1.11.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.12>works/libs/Smdn.Net.Imap4.Client/releases#changes_v1.12]]時点のものです。
[[works/libs/Smdn.Net.Imap4.Client]]のドキュメントとサンプルです。 ここに記載されているものは[[version 1.11>works/libs/Smdn.Net.Imap4.Client/releases#changes_v1.11]]時点のものです。
 

        

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

        

        
1019,9 1019,7
 
}}
}}
 
#tabpage-end
#tabpage-end
 

        

        
~
メッセージの本文全体をダウンロードする以外にも、オプションを指定することにより[[メッセージの一部分のみを取得>#operation_examples_message_partialfetch]]することもできます。
本ライブラリではダウンロードしたメッセージのヘッダパートを解析したり添付ファイルの抽出を行ったりする機能は用意していません。 そういったIMAPの仕様を超える機能は[[Smdn.Formats.Mime>works/libs/Smdn.Formats.Mime]]で提供しているので、必要な場合はこれらのライブラリを組み合わせて使ってください。
+

          
+
なお、本ライブラリではダウンロードしたメッセージのヘッダパートを解析したり添付ファイルの抽出を行ったりする機能は用意していません。 そういったIMAPの仕様を超える機能は[[Smdn.Formats.Mime>works/libs/Smdn.Formats.Mime]]で提供しているので、必要な場合はこれらのライブラリを組み合わせて使ってください。
 

        

        
 
参考までに、本ライブラリとSmdn.Formats.Mimeを組み合わせて使う場合の例を挙げます。
参考までに、本ライブラリとSmdn.Formats.Mimeを組み合わせて使う場合の例を挙げます。
 

        

        
1465,9 1463,9
 
}}
}}
 
#column-end
#column-end
 

        

        
~
[[ImapMessageInfo.GetMessagePart()>#operation_reference_message_messagepart]]などのメソッドを使用することにより特定のメッセージパートを参照することができ、その[[メッセージパートに関する情報を取得>#operation_examples_message_messagepart]]したり、メッセージ本文のうち[[メッセージパートの内容のみを取得>#operation_examples_message_partialfetch]]したりすることができます。
このセクション番号を指定することにより、IMAPではメッセージの全体ではなく特定のメッセージパートだけを取得することができます。 [[ImapMessageInfo.GetMessagePart()>#operation_reference_message_messagepart]]などのメソッドを使用することにより特定のメッセージパートを取得し、そのメッセージパートに関する情報を取得することができます。
 

        

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

        

        
 
#preformatted(メールボックスにあるメッセージの構造とセクション番号){{
#preformatted(メールボックスにあるメッセージの構造とセクション番号){{
 
multipart/mixed
multipart/mixed
1492,6 1490,24
 
}}
}}
 
#tabpage-end
#tabpage-end
 

        

        
-
同様に、セクション番号``2``(image/jpegのパート)だけを取得して保存する場合は次のようにします。 オプションにImapMessageFetchBodyOptions.DecodeContentを指定することにより、(BASE64などで)エンコードされている状態からのデコードも同時に行います。
-

          
-
#tabpage(codelang=cs,container-title=上記のメッセージからimage/jpegのパートだけを取得して保存する例)
-
#code{{
-
using (ImapClient client = new ImapClient()) {
-
  using (var mailbox = client.OpenInbox()) {
-
    // 目的のメッセージはINBOX内にあるUIDが1のメッセージと仮定
-
    var message = mailbox.GetMessageByUid(1L, ImapMessageFetchAttributeOptions.StaticAttributes);
-

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

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

        

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

        

        
+
この例で使用しているImapMessageFetchBodyOptions.DecodeContentについては[[#operation_examples_message_decodecontent]]で解説します。
+

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

        

        
 
#tabpage(codelang=cs,container-title=メッセージに添付されているファイルを保存する例)
#tabpage(codelang=cs,container-title=メッセージに添付されているファイルを保存する例)
1606,7 1620,7
 
}}
}}
 
#tabpage-end
#tabpage-end
 

        

        
~
#prompt(実行結果の一例){{
#code(prompt,実行結果の一例){{
 
[] multipart/mixed
[] multipart/mixed
 
[1] text/plain
[1] text/plain
 
[2] message/rfc822
[2] message/rfc822
1615,7 1629,7
 
[3.1] text/plain
[3.1] text/plain
 
}}
}}
 

        

        
~
#prompt(実行結果の一例){{
#code(prompt,実行結果の一例){{
 
[] multipart/mixed
[] multipart/mixed
 
[1] text/plain
[1] text/plain
 
[2] image/jpeg
[2] image/jpeg
1624,245 1638,8
 
}}
}}
 

        

        
 

        

        
+
****メッセージの一部分の取得 [#operation_examples_message_partialfetch]
+
IMAPではメッセージ全体の取得以外にも、特定のメッセージパートのみの取得や、ヘッダ部分やボディ部分のみの取得を行うことができるようになっています。 ImapMessageInfoクラスおよびImapMessagePartInfoクラスでは、メッセージの一部分のみを取得するためのメソッドやオプションを用意しています。
+

          
+
*****ImapMessageInfoクラス
+
ImapMessageInfoクラスでは、[[OpenRead()やReadAllText()などのメソッド>#operation_reference_message_readbody]]でメッセージ本文を取得することができます。 デフォルトではメッセージ全体を取得しますが、ImapMessageFetchBodyOptions.OmitHeaderを指定することによりヘッダ部分を省略したボディ部分のみを取得することもできます。 また、[[GetHeader()やGetRawHeader()などのメソッド>#operation_reference_message_readheader]]を使用するとヘッダ部分のみを取得することができます。
+

          
+
#column
+
#preformatted(取得対象のメッセージの構造例){{
+
Content-Type: text/plain   ^   ^
+
From: from@example.net     |   |
+
To: to@example.net         |   |
+
Subject: sample message   (3)  |
+
      :                    |   |
+
      :                    |  (1)
+
                           v   |
+
MIME message body          ^   |
+
line 1                     |   |
+
line 2                    (2)  |
+
   :                       |   |
+
   :                       v   v
+
}}
+
#column
+
|~取得したい部分|~メソッド呼び出しの例|h
+
|(1) メッセージ全体|{{
+
ImapMessageInfo.OpenRead()
+
ImapMessageInfo.ReadAllText()
+
など
+
}}|
+
|(2) ボディ部分のみ|{{
+
ImapMessageInfo.OpenRead(ImapMessageFetchBodyOptions.OmitHeader)
+
ImapMessageInfo.ReadAllText(ImapMessageFetchBodyOptions.OmitHeader)
+
など
+
}}|
+
|(3) ヘッダ部分のみ|{{
+
ImapMessageInfo.GetHeader()
+
ImapMessageInfo.GetRawHeader()
+
}}|
+
#column-end
+

          
+
*****ImapMessagePartInfoクラス
+
ImapMessagePartInfoが特定のメッセージパートを表す場合では、[[OpenRead()やReadAllText()などのメソッド>#operation_reference_messagepart_readbody]]は''メッセージパートのボディ部分のみ''を取得します。 ImapMessageInfoクラスのメソッドとは異なり、取得される内容には''ヘッダ部分が含まれない''点に注意してください。 メッセージパートのヘッダ部分は[[GetHeader(), GetRawHeader()メソッド>#operation_reference_messagepart_readheader]]で取得することができます。
+

          
+
#column
+
#preformatted(取得対象のメッセージの構造例){{
+
Content-Type: multipart/mixed;                    ^
+
  boundary=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx       |
+
From: from@example.net                            |
+
To: to@example.net                                |
+
Subject: sample message                           |
+
      :                                           |
+
      :                                           |
+
                                                  |
+
MIME message body                             ^   |
+
--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx            |   |
+
Content-Type: text/plain                  ^   |   |
+
Content-Disposition: inline              (2)  |   |
+
Content-Description: message part 1       |   |  (4)
+
                                          v   |   |
+
message part 1                            ^   |   |
+
    :                                    (1)  |   |
+
    :                                     v   |   |
+
--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx            |   |
+
Content-Type: text/plain                     (3)  |
+
Content-Disposition: inline                   |   |
+
Content-Description: message part 2           |   |
+
                                              |   |
+
  message part 2                              |   |
+
    :                                         |   |
+
    :                                         |   |
+
--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--          v   v
+
}}
+
#column
+
|~取得したい部分|~メソッド呼び出しの例|h
+
|(1) 特定メッセージパートのボディ部分のみ|{{
+
ImapMessageInfo.GetMessagePart(1).OpenRead()
+
ImapMessageInfo.GetMessagePart(1).ReadAllText()
+
など
+
}}|
+
|(2) 特定メッセージパートのヘッダ部分のみ|{{
+
ImapMessageInfo.GetMessagePart(1).GetHeader()
+
ImapMessageInfo.GetMessagePart(1).GetRawHeader()
+
}}|
+
|(3) メッセージ全体のボディ部分のみ|{{
+
ImapMessageInfo.OpenRead(ImapMessageFetchBodyOptions.OmitHeader)
+
ImapMessageInfo.ReadAllText(ImapMessageFetchBodyOptions.OmitHeader)
+
あるいは
+
ImapMessageInfo.MessagePart.OpenRead(ImapMessageFetchBodyOptions.OmitHeader)
+
ImapMessageInfo.MessagePart.ReadAllText(ImapMessageFetchBodyOptions.OmitHeader)
+
}}|
+
|(4) メッセージ全体|{{
+
ImapMessageInfo.OpenRead()
+
ImapMessageInfo.ReadAllText()
+
あるいは
+
ImapMessageInfo.MessagePart.OpenRead()
+
ImapMessageInfo.MessagePart.ReadAllText()
+
}}|
+
#column-end
+

          
+
一方、ImapMessageInfo.MessagePartプロパティおよびIsRootプロパティがtrueのImapMessagePartInfoはメッセージ全体を表します。 この場合は、ImapMessageInfoクラスのメソッドを使用した場合と同じ動作となります。
+

          
+
#column
+
#preformatted(取得対象のメッセージの構造例){{
+
Content-Type: text/plain   ^   ^
+
From: from@example.net     |   |
+
To: to@example.net         |   |
+
Subject: sample message   (3)  |
+
      :                    |   |
+
      :                    |  (1)
+
                           v   |
+
MIME message body          ^   |
+
line 1                     |   |
+
line 2                    (2)  |
+
   :                       |   |
+
   :                       v   v
+
}}
+
#column
+
|~取得したい部分|~メソッド呼び出しの例|h
+
|(1) メッセージ全体|{{
+
ImapMessageInfo.MessagePart.OpenRead()
+
ImapMessageInfo.MessagePart.ReadAllText()
+
など
+
}}|
+
|(2) ボディ部分のみ|{{
+
ImapMessageInfo.MessagePart.OpenRead(ImapMessageFetchBodyOptions.OmitHeader)
+
ImapMessageInfo.MessagePart.ReadAllText(ImapMessageFetchBodyOptions.OmitHeader)
+
など
+
}}|
+
|(3) ヘッダ部分のみ|{{
+
ImapMessageInfo.MessagePart.GetHeader()
+
ImapMessageInfo.MessagePart.GetRawHeader()
+
}}|
+
#column-end
+

          
+
*****ImapPartialRange構造体
+
ImapMessageInfoクラス・ImapMessagePartInfoクラスのOpenReadメソッドでは、引数にImapPartialRange構造体を指定することにより取得する範囲をオクテット単位で指定することができます。 ImapMessageFetchBodyOptions.OmitHeaderと組み合わせて指定することにより、取得する範囲にヘッダ部分を含めるかどうかを指定することもできます。
+

          
+
#code(cs,オクテット単位で取得する範囲を指定する例){{
+
using (ImapClient client = new ImapClient()) {
+
  using (var mailbox = client.OpenInbox()) {
+
    var message = mailbox.GetMessageByUid(1L, ImapMessageFetchAttributeOptions.StaticAttributes);
+

          
+
    // メッセージの32オクテット目から256オクテット分を取得するStreamを開く
+
    message.OpenRead(new ImapPartialRange(32, 256));
+

          
+
    // メッセージのボディ部分の32オクテット目から256オクテット分を取得するStreamを開く
+
    message.OpenRead(new ImapPartialRange(32, 256), ImapMessageFetchBodyOptions.OmitHeader);
+

          
+
    var part = message.GetMessagePart(1);
+

          
+
    // 1番目のメッセージパートのボディ部分の100オクテット目以降を取得するStreamを開く
+
    part.OpenRead(new ImapPartialRange(100));
+
  }
+
}
+
}}
+

          
+
なお、ImapPartialRangeを指定した場合はImapMessageFetchBodyOptions.DecodeContentを指定することはできません。 指定した場合はNotSupportedExceptionをスローします。
+

          
+

          
+
****メッセージのデコード [#operation_examples_message_decodecontent]
+
ImapMessagePartInfoクラスでは、メッセージパートの内容を取得すると同時に、取得した内容のデコードを行うことができます。 ImapMessageFetchBodyOptions.DecodeContentを指定した場合、[[OpenRead(), ReadAllBytes(), Download(), Save()などのメソッド>#operation_reference_messagepart_readbody]]は、取得した内容を``Content-Transfer-Encoding``ヘッダの値(ImapMessagePartInfo.ContentTransferEncodingプロパティ)の値に従ってデコードします。
+

          
+
例えば、BASE64でエンコードされているメッセージパートのボディ部分をデコードした状態で取得するには次のようにします。
+

          
+
#code(,BASE64でエンコードされたバイナリデータを含むメッセージ){{
+
Content-Type: multipart/mixed;
+
  boundary=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+

          
+
my photo
+
--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
Content-Type: image/jpeg
+
Content-Transfer-Encoding: base64
+
Content-Disposition: inline
+

          
+
/9j/4AAQSkZJRgABAQEASABIAAD/2wBDA.....
+
CAgHCAgJCg0LCQoMCggICw8LDA0ODg8OC.....
+
Dg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4OD.....
+
--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--
+
}}
+

          
+
#code(cs){{
+
using (ImapClient client = new ImapClient()) {
+
  using (var mailbox = client.OpenInbox()) {
+
    // 目的のメッセージはINBOX内にあるUIDが1のメッセージと仮定
+
    var message = mailbox.GetMessageByUid(1L, ImapMessageFetchAttributeOptions.StaticAttributes);
+

          
+
    // 1番目のメッセージパートを取得
+
    var part = message.GetMessagePart(1);
+

          
+
    // メッセージパートのボディ部分を取得すると同時にBASE64からデコードし、結果を保存する
+
    part.Save("photo.jpg", ImapMessageFetchBodyOptions.DecodeContent);
+
  }
+
}
+
}}
+

          
+
また、OpenText(), ReadAllText(), ReadAllLines()などの取得した内容を文字列として扱うメソッドでは、``Content-Transfer-Encoding``ヘッダの値に従ったデコードに加えて、``Content-Type``ヘッダの``charset``パラメータ(ImapMessagePartInfo.ContentTypeCharsetプロパティ)の値に従ってバイナリ→文字列のデコードも行います。
+

          
+
#code(,quoted-printableでエンコードされたテキストデータを含むメッセージ){{
+
Content-Type: multipart/mixed;
+
  boundary=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+

          
+
html text
+
--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
Content-Type: text/html; charset=utf-8
+
Content-Transfer-Encoding: quoted-printable
+
Content-Disposition: inline
+

          
+
=3Chtml=3E=0D=0A=20=3Ctitle=3E=E3=82=
+
=BF=E3=82=A4=E3=83=88=E3=83=AB=3C=2F=
+
title=3E=0D=0A=20=3Cbody=3E=E6=9C=AC=
+
=E6=96=87=3C=2Fbody=3E=0D=0A=3C=2Fht=
+
ml=3E
+
--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--
+
}}
+

          
+
#code(cs){{
+
using (ImapClient client = new ImapClient()) {
+
  using (var mailbox = client.OpenInbox()) {
+
    // 目的のメッセージはINBOX内にあるUIDが1のメッセージと仮定
+
    var message = mailbox.GetMessageByUid(1L, ImapMessageFetchAttributeOptions.StaticAttributes);
+

          
+
    // 1番目のメッセージパートを取得
+
    var part = message.GetMessagePart(1);
+

          
+
    // メッセージパートのボディ部分を取得すると同時にquoted-printableからデコードする
+
    // 文字列化に際して、Content-Typeヘッダに指定されているUTF-8が使用される
+
    Console.WriteLine(part.ReadAllText(ImapMessageFetchBodyOptions.DecodeContent));
+
  }
+
}
+
}}
+

          
+
#prompt(実行結果){{
+
<html>
+
 <title>タイトル</title>
+
 <body>本文</body>
+
</html>
+
}}
+

          
 

        

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

        

        
 
IMAPでは、サーバー側で解析されたMIMEメッセージの構造(''BODYSTRUCTURE'')を取得することができます。 これにより、メッセージ全体を取得・パースしなくてもメッセージがどのような構造になっているかを本文の取得前に知ることができます。
IMAPでは、サーバー側で解析されたMIMEメッセージの構造(''BODYSTRUCTURE'')を取得することができます。 これにより、メッセージ全体を取得・パースしなくてもメッセージがどのような構造になっているかを本文の取得前に知ることができます。
3065,7 2842,7
 
|~ImapOpenedMailboxInfo|{{
|~ImapOpenedMailboxInfo|{{
 
GetMessageByUid(long)
GetMessageByUid(long)
 
GetMessageByUid(long, ImapMessageFetchAttributeOptions)
GetMessageByUid(long, ImapMessageFetchAttributeOptions)
~
}}|メールボックスにあるメッセージのうち、指定したUIDを持つ1つのメッセージを取得します。 該当するUIDのメッセージが無い場合はImapMessageNotFoundExceptionをスローします。|FETCH|
}}|メールボックスにあるメッセージのうち、指定したUIDを持つ1つのメッセージを取得します。|FETCH|
 
|~|{{
|~|{{
 
GetMessageByUidAsync(long)
GetMessageByUidAsync(long)
 
GetMessageByUidAsync(long, ImapMessageFetchAttributeOptions)
GetMessageByUidAsync(long, ImapMessageFetchAttributeOptions)
3073,19 2850,11
 
|~|{{
|~|{{
 
GetMessageBySequence(long)
GetMessageBySequence(long)
 
GetMessageBySequence(long, ImapMessageFetchAttributeOptions)
GetMessageBySequence(long, ImapMessageFetchAttributeOptions)
~
}}|メールボックスにあるメッセージのうち、指定した通番を持つ1つのメッセージを取得します。 該当する通番のメッセージが無い場合はImapMessageNotFoundExceptionをスローします。|~|
}}|メールボックスにあるメッセージのうち、指定した通番を持つ1つのメッセージを取得します。|~|
 
|~|{{
|~|{{
 
GetMessageBySequenceAsync(long)
GetMessageBySequenceAsync(long)
 
GetMessageBySequenceAsync(long, ImapMessageFetchAttributeOptions)
GetMessageBySequenceAsync(long, ImapMessageFetchAttributeOptions)
 
}}|~|~|
}}|~|~|
+
|~|{{
+
GetMessageFirstUnseen()
+
GetMessageFirstUnseen(ImapMessageFetchAttributeOptions)
+
}}|メールボックスにあるメッセージのうち、最初の未読メッセージを取得します。 未読メッセージがない場合は``null``を返します。|~|
+
|~|{{
+
GetMessageFirstUnseenAsync()
+
GetMessageFirstUnseenAsync(ImapMessageFetchAttributeOptions)
+
}}|~|~|
 
|~クラス|~メソッド|~解説|~対応するIMAPコマンド|f
|~クラス|~メソッド|~解説|~対応するIMAPコマンド|f
 

        

        
 
|*メールボックス内の複数のメッセージの取得・検索に関するメソッド
|*メールボックス内の複数のメッセージの取得・検索に関するメソッド
3252,8 3021,8
 
|~|~|MediaType|メッセージのメディアタイプを返します。 MessagePart.ContentTypeプロパティと同じ値を返します。|
|~|~|MediaType|メッセージのメディアタイプを返します。 MessagePart.ContentTypeプロパティと同じ値を返します。|
 
|~|~|Length|メッセージのサイズをバイト単位で返します。|
|~|~|Length|メッセージのサイズをバイト単位で返します。|
 
|~|~|Envelope|メッセージのエンベロープを表すImapEnvelopeのインスタンスを返します。|
|~|~|Envelope|メッセージのエンベロープを表すImapEnvelopeのインスタンスを返します。|
~
|~|~|EnvelopeDate|メッセージのDateヘッダをパースした値をNullable<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|(&color(red){廃止予定};:MessagePartプロパティを使用してください) メッセージの構造(BODYSTRUCTURE)を表すIImapBodyStructureのインスタンスを返します。|
 
|~クラス|>|~プロパティ|~解説|f
|~クラス|>|~プロパティ|~解説|f
3348,8 3117,9
 
これらすべてのメソッドは、引数でセクション番号あるいはセクションを表すBODYSTRUCTUREのIImapBodyStructureを指定することができるオーバーロードが用意されています。 これらのオーバーロードでは、メッセージ本文全体ではなく指定したセクション部分だけを取得します。 詳細については[[#operation_reference_message_section_bodystructure]]で解説します。
これらすべてのメソッドは、引数でセクション番号あるいはセクションを表すBODYSTRUCTUREのIImapBodyStructureを指定することができるオーバーロードが用意されています。 これらのオーバーロードでは、メッセージ本文全体ではなく指定したセクション部分だけを取得します。 詳細については[[#operation_reference_message_section_bodystructure]]で解説します。
 
:メッセージ本文の取得オプション(ImapMessageFetchBodyOptions)|これらのメソッドには、ImapMessageFetchBodyOptionsを引数にとるバージョンのオーバーロードを用意してあります。 ImapMessageFetchBodyOptionsを指定することで、メッセージ本文取得時の動作を指定することができます。 以下の値を組み合わせて指定できます。
:メッセージ本文の取得オプション(ImapMessageFetchBodyOptions)|これらのメソッドには、ImapMessageFetchBodyOptionsを引数にとるバージョンのオーバーロードを用意してあります。 ImapMessageFetchBodyOptionsを指定することで、メッセージ本文取得時の動作を指定することができます。 以下の値を組み合わせて指定できます。
 
::SetSeen|メッセージ本文の取得と同時に、メッセージを既読にします。 このオプションを指定しない場合は、メッセージの既読/未読の状態をそのままにします。
::SetSeen|メッセージ本文の取得と同時に、メッセージを既読にします。 このオプションを指定しない場合は、メッセージの既読/未読の状態をそのままにします。
~
::OmitHeader|メッセージ本文のうち、ヘッダ部分を省略したボディ部分のみを取得します。
::DecodeContent|メソッドの引数でIImapBodyStructureを指定した場合のみ有効。 BODYSTRUCTUREからセクションのエンコーディング・文字コードを取得し、メッセージ本文をデコードします。 このオプションを指定しない場合は、セクションをデコードせずに取得します。
~
::DecodeContent|ImapMessageInfoクラスではサポートされません。 指定した場合はNotSupportedExceptionをスローします。
:::サポートしているエンコーディング(Content-Transfer-Encoding)|7bit, 8bit, binary, base64, quoted-printable, uuencode(ただし、ファイルが複数格納されている場合は先頭のファイルのみ取得可能)
-
:::サポートされる文字コード(Content-Typeのcharsetパラメータ)|utf-8, shift_jis, iso-2022-jpほか、ランタイムがサポートする文字コード
 
::Default|オプションのデフォルト値です。 上記オプションのいずれも指定しない場合と同値です。
::Default|オプションのデフォルト値です。 上記オプションのいずれも指定しない場合と同値です。
 

        

        
 

        

        
3377,7 3147,7
 
:ImapMessageInfo.FindMessagePart()およびImapMessageInfo.FindAllMessageParts()|引数として[[ImapMessagePartInfo.Predicatesクラスに定義済みのメソッド>#operation_reference_messagepart_find]]を指定することができます。
: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]]を使用してください)
(&color(red){廃止予定};:[[ImapMessageInfo.GetMessagePart()などのメソッド>#operation_reference_message_messagepart]]および[[ImapMessagePartInfoクラス>#operation_reference_messagepart]]を使用してください)
 

        

        
 
以下はメッセージのセクションと構造に関する操作を行うプロパティとメソッドです。
以下はメッセージのセクションと構造に関する操作を行うプロパティとメソッドです。
3729,15 3499,12
 
|~|~|IsMultiPart|メッセージパートがマルチパート形式かどうかを表す値を返します。|
|~|~|IsMultiPart|メッセージパートがマルチパート形式かどうかを表す値を返します。|
 
|~|~|NestedMessageParts|メッセージパートがマルチパート形式の場合、内包している子メッセージパートを格納した読み取り専用のリストを返します。 マルチパート形式以外の場合は空のリストを返します。|
|~|~|NestedMessageParts|メッセージパートがマルチパート形式の場合、内包している子メッセージパートを格納した読み取り専用のリストを返します。 マルチパート形式以外の場合は空のリストを返します。|
 
|~|~|HasEncapsulatedMessage|メッセージパートがカプセル化されたメッセージを内包している(``message/rfc822``)かどうかを表す値を返します。|
|~|~|HasEncapsulatedMessage|メッセージパートがカプセル化されたメッセージを内包している(``message/rfc822``)かどうかを表す値を返します。|
+
|~|~|IsEncapsulatedMessage|メッセージパートがカプセル化されたメッセージ(``message/rfc822``に内包されたメッセージ)かどうかを表す値を返します。|
 
|~|~|EncapsulatedMessagePart|カプセル化されたメッセージを表すImapMessagePartInfoを返します。 カプセル化されたメッセージを持たない場合は``null``を返します。|
|~|~|EncapsulatedMessagePart|カプセル化されたメッセージを表すImapMessagePartInfoを返します。 カプセル化されたメッセージを持たない場合は``null``を返します。|
 
|~|~|EncapsulatedMessageEnvelope|カプセル化されたメッセージのエンベロープを表すImapEnvelopeを返します。 カプセル化されたメッセージを持たない場合は``null``を返します。|
|~|~|EncapsulatedMessageEnvelope|カプセル化されたメッセージのエンベロープを表すImapEnvelopeを返します。 カプセル化されたメッセージを持たない場合は``null``を返します。|
+
|~|~|NestLevel|メッセージパートの入れ子深度を表す値を返します。 最上位のメッセージパートの場合は``0``、マルチパートの子メッセージパートやカプセル化されたメッセージパートの場合は、親パートのNestLevelに``+1``した値を返します。|
 
|~|~|Length|メッセージパートのサイズをバイト単位で返します。 メッセージパートがマルチパート形式の場合は``0``を返します。|
|~|~|Length|メッセージパートのサイズをバイト単位で返します。 メッセージパートがマルチパート形式の場合は``0``を返します。|
 
|~|~|LineCount|メッセージパート本文、またはカプセル化されたメッセージの行数を返します。 非テキストパートやマルチパート形式の場合は``0``を返します。|
|~|~|LineCount|メッセージパート本文、またはカプセル化されたメッセージの行数を返します。 非テキストパートやマルチパート形式の場合は``0``を返します。|
 
|~|~メッセージパートのヘッダ|ContentType|メッセージパートの``Content-Type``ヘッダの値を返します。|
|~|~メッセージパートのヘッダ|ContentType|メッセージパートの``Content-Type``ヘッダの値を返します。|
 
|~|~|ContentTypeParameters|メッセージパートの``Content-Type``ヘッダのパラメータを格納したディクショナリを返します。 パラメータが無い場合・取得できない場合は空のディクショナリを返します。|
|~|~|ContentTypeParameters|メッセージパートの``Content-Type``ヘッダのパラメータを格納したディクショナリを返します。 パラメータが無い場合・取得できない場合は空のディクショナリを返します。|
+
|~|~|ContentTypeCharset|メッセージパートの``Content-Type``ヘッダの``charset``パラメータの値を返します。 ``charset``パラメータが無い場合は``null``を返します。|
 
|~|~|ContentTransferEncoding|メッセージパートの``Content-Transfer-Encoding``ヘッダの値を返します。 ヘッダが無い場合・取得できない場合は``null``を返します。|
|~|~|ContentTransferEncoding|メッセージパートの``Content-Transfer-Encoding``ヘッダの値を返します。 ヘッダが無い場合・取得できない場合は``null``を返します。|
 
|~|~|ContentTransferEncodingMethod|メッセージパートの``Content-Transfer-Encoding``ヘッダの値を列挙体の値で返します。 ヘッダが無い場合・取得できない場合は``ContentTransferEncodingMethod.Unknown``を返します。|
|~|~|ContentTransferEncodingMethod|メッセージパートの``Content-Transfer-Encoding``ヘッダの値を列挙体の値で返します。 ヘッダが無い場合・取得できない場合は``ContentTransferEncodingMethod.Unknown``を返します。|
 
|~|~|ContentDisposition|メッセージパートの``Content-Disposition``ヘッダの値を返します。 ヘッダが無い場合・取得できない場合は``null``を返します。|
|~|~|ContentDisposition|メッセージパートの``Content-Disposition``ヘッダの値を返します。 ヘッダが無い場合・取得できない場合は``null``を返します。|
3793,7 3560,7
 

        

        
 

        

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

        

        
 
|*メッセージパートの内容の取得に関するメソッド
|*メッセージパートの内容の取得に関するメソッド
 
|~クラス|~メソッド|~解説|~対応するIMAPコマンド|h
|~クラス|~メソッド|~解説|~対応するIMAPコマンド|h
3832,6 3599,17
 
および類似のオーバーロード
および類似のオーバーロード
 
}}|メッセージ本文を読み込むためのStreamを取得し、指定されたConverter<Stream, TResult>で変換された結果を取得します。|FETCH|
}}|メッセージ本文を読み込むための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>)
ReadAs<TResult>(Converter<StreamReader, TResult>)
 
ReadAsAsync<TResult>(Converter<StreamReader, TResult>)
ReadAsAsync<TResult>(Converter<StreamReader, TResult>)
 
および類似のオーバーロード
および類似のオーバーロード
3858,37 3636,6
 
}}|メッセージ本文をメモリ上にダウンロードしたStreamを取得します。|FETCH|
}}|メッセージ本文をメモリ上にダウンロードしたStreamを取得します。|FETCH|
 
|~クラス|~メソッド|~解説|~対応するIMAPコマンド|f
|~クラス|~メソッド|~解説|~対応するIMAPコマンド|f
 

        

        
+
:すべてのメソッド|以下に記述する事項を除き、基本的な動作・使用上の注意点は[[ImapMessageInfoクラスの同名メソッド>#operation_reference_message_readbody]]と同様です。
+
:特定のメッセージパート内容の取得|これらのメソッドでは、メッセージパートの内容のうち''ヘッダ部分を除いたボディ部分''のみが取得されます。 ヘッダ部分が必要となる場合は[[ImapMessagePartInfo.GetHeader()などのメソッド>#operation_reference_messagepart_readheader]]を使用してください。
+
:メッセージ全体の内容の取得|ImapMessageInfo.MessagePartプロパティ、またはIsRootPartがtrueのImapMessagePartInfoからこれらのメソッドを呼び出した場合は''ヘッダ部分を含む''内容が取得されます。 ヘッダ部分を除いた内容を取得したい場合はImapMessageFetchBodyOptions.OmitHeaderを指定してください。
+
:メッセージパート内容の取得オプション(ImapMessageFetchBodyOptions)|これらのメソッドには、ImapMessageFetchBodyOptionsを引数にとるバージョンのオーバーロードを用意してあります。 ImapMessageFetchBodyOptionsを指定することで、メッセージ本文取得時の動作を指定することができます。 以下の値を組み合わせて指定できます。
+
::SetSeen|メッセージパート内容の取得と同時に、メッセージ自体を既読にします。 このオプションを指定しない場合は、メッセージの既読/未読の状態をそのままにします。
+
::OmitHeader|メッセージ本文のうち、ヘッダ部分を省略したボディ部分のみを取得します。 このオプションはImapMessageInfo.MessagePartプロパティ、またはIsRootPartがtrueのImapMessagePartInfoからメソッドを呼び出す場合のみ有効です。 それ以外の場合は指定しても取得される内容は変わりません。
+
::DecodeContent|メッセージパートの転送エンコーディング(ContentTransferEncodingプロパティ)に従ってメッセージパートの内容をデコードします。 結果を文字列として取得するメソッドではメッセージパートの文字コード(ContentTypeCharsetプロパティ)に従ったデコードも行います。 このオプションを指定しない場合は、メッセージパートの内容をデコードせずに取得します。
+
:::サポートしているエンコーディング|7bit, 8bit, binary, base64, quoted-printable, uuencode(ただし、ファイルが複数格納されている場合は先頭のファイルのみ取得可能)
+
:::サポートされる文字コード|utf-8, shift_jis, iso-2022-jpほか、ランタイムの&msdn(netfx,type,System.Text.Encoding){Encodingクラス};がサポートする文字コード
+
::Default|オプションのデフォルト値です。 上記オプションのいずれも指定しない場合と同値です。
+
:文字コードのフォールバック|EncodingSelectionCallbackを指定できるオーバーロードでは、サポートしていない文字コードの場合にコールバックメソッドを呼び出し、代替となる文字コードを選択することができます。 文字コードのフォールバック用コールバックメソッドはImapMessageFetchBodyOptions.DecodeContentを指定した場合のみ使用されます。
+

          
+

          
+
****メッセージパートのヘッダの取得 [#operation_reference_messagepart_readheader]
+
以下はメッセージパートのヘッダ(From, Subject, Content-Type等)の取得に関するメソッドです。
+

          
+
|*メッセージパートのヘッダの取得に関するメソッド
+
|~クラス|~メソッド|~解説|~対応するIMAPコマンド|h
+
|~ImapMessagePartInfo|{{
+
GetHeader()
+
GetHeaderAsync()
+
およびオーバーロード
+
}}|メッセージパートのヘッダ部分のみを取得し、ヘッダ名と値に分離したKeyValuePairの配列で返します。 オプションでヘッダの値をデコードするかどうかを指定できます。|FETCH|
+
|~|{{
+
GetRawHeader()
+
GetRawHeaderAsync()
+
およびオーバーロード
+
}}|メッセージパートのヘッダ部分のみを取得し、単一の文字列として返します。|~|
+

          
+

          
+

          
 

        

        
 

        

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

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

        

        
 
*変更履歴 [#changes]
*変更履歴 [#changes]
+
**0.39 (2014-08-15) [#changes_v0.39]
+
-修正・改善
+
--上位ライブラリのインターフェイス変更にあわせて実装を修正
+
--その他機能上の変更はなし
+

          
 
**0.38 (2014-08-01) [#changes_v0.38]
**0.38 (2014-08-01) [#changes_v0.38]
 
-機能追加
-機能追加
 
--Mail.GetHeaderValueOf()について、ヘッダの値を取得する際にコメントを削除してどうかを指定できるオーバーロードを追加
--Mail.GetHeaderValueOf()について、ヘッダの値を取得する際にコメントを削除してどうかを指定できるオーバーロードを追加

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.39.tar.bz2}
:最新版 (ソースコード)|${smdncms:distfilelink,Smdn.Formats.Mime-0.38.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/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.26 (2014-08-15)>#changes_v1.26]]|~ソースコード|{{
+
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.26.tar.bz2}
+
}}|
+
|~|~DLL|{{
+
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.26-netfx4.5.zip,.NET 4.5}
+
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.26-netfx4.0.zip,.NET 4}
+
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.26-netfx3.5.zip,.NET 3.5}
+
}}|
+
|~|~DLL&br;([[単一アセンブリ版>#releases_combined]])|{{
+
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.26-netfx4.5-combined.zip,.NET 4.5}
+
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.26-netfx4.0-combined.zip,.NET 4}
+
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.26-netfx3.5-combined.zip,.NET 3.5}
+
}}|
 
|~[[1.25 (2014-08-01)>#changes_v1.25]]|~ソースコード|{{
|~[[1.25 (2014-08-01)>#changes_v1.25]]|~ソースコード|{{
 
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.25.tar.bz2}
${smdncms:distfilelink,../Smdn.Net.Pop3.Client-1.25.tar.bz2}
 
}}|
}}|
319,13 306,6
 
コンパイラにMono mcsを使用、オプションに/debug- /optimize+ /define:TRACEを指定してビルドしています。
コンパイラにMono mcsを使用、オプションに/debug- /optimize+ /define:TRACEを指定してビルドしています。
 

        

        
 
*変更履歴 [#changes]
*変更履歴 [#changes]
+
**1.26 (2014-08-15) [#changes_v1.26]
+
-機能追加
+
--PopClient
+
---PopClient.Connect()にCancellationTokenを指定できるバージョンを追加
+
-修正・改善
+
--SASL認証の進行中にCancellationTokenによる中断要求があった場合は認証処理を中断するようにした
+

          
 
**1.25 (2014-08-01) [#changes_v1.25]
**1.25 (2014-08-01) [#changes_v1.25]
 
-機能追加
-機能追加
 
--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.26.tar.bz2}
:最新版 (ソースコード)|${smdncms:distfilelink,Smdn.Net.Pop3.Client-1.25.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]]をご覧ください