TKMP.DLLを使用してメールを受信したい(.NET)

タグの編集
投稿者 nao  (中学生) 投稿日時 2011/11/20 10:18:28
TKMP.DLLを使用してメールを受信したいのですが、ヘッダーの受信方法はわかりました。
ただし、本文を受信するコードがよくわかりません。コードからどなたか教えて下さい。

なるべくこのDLLを使用したいのですが、もし他に良いDLLがあれば教えて下さい。

環境はMicrosoft Visual Basic 2010 Expressです。
投稿者 YuO  (社会人) 投稿日時 2011/11/20 19:22:01
サイトの Tips とかオンラインライブラリを見た限りだと,
1. MailData の ReadBody メソッドを呼び出す
2. MailData の DataStream プロパティから Stream を取得する
3. MailReader クラスを,2.で取得した Stream を元に生成する
4. 3.で作った MailReader クラスのインスタンスから本文を取得する
という手順のようです。

MailReader クラスの MailText とか PartCollection, FileCollection 各プロパティを使って,
色々と本文や添付ファイルなどを取得できそうです。
投稿者 LINK  (社会人) 投稿日時 2011/11/21 11:04:08
サンプルソースは古いバージョン(2.4.21)であれば
[http://uwa.potetihouse.com/dlfiles/index.html]から
.NET 2.0用 サンプルコード付のファイルをダウンロードすることができるようです。

サンプルコードからの引用~
    ' リストビューをダブルクリックでメール本文の解析を行う
    Private Sub listView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles listView1.DoubleClick
        Dim lvi As System.Windows.Forms.ListViewItem = listView1.FocusedItem
        If lvi Is Nothing Then
            Return
        End If
        Dim mi As MailItem = CType(lvi, MailItem)

        '受信未完了時にメール全文を受信する
        If mi.MailData.DataStream Is Nothing Then
            AddHandler mi.MailData.BodyDataReceive, AddressOf MailData_DataReceive
            Dim GetFlag As Boolean = mi.MailData.ReadBody()
            RemoveHandler mi.MailData.BodyDataReceive, AddressOf MailData_DataReceive
            If Not GetFlag Then
                Return
            End If
        End If

        'リーダークラスへ受信したメールデータを渡す
        Dim re As New TKMP.Reader.MailReader(mi.MailData.DataStream, False)

        '添付ファイルの情報を表示
        Dim s As String = String.Empty
        If re.FileCount <> 0 Then
            s += "-------------------------添付ファイル---------------------" + Microsoft.VisualBasic.ControlChars.CrLf

            For Each f As TKMP.Reader.File In re.FileCollection
                s += f.FileName + "   (" + f.FileSize.ToString() + "byte)" + Microsoft.VisualBasic.ControlChars.CrLf
            Next
            s += "----------------------------------------------------------" + Microsoft.VisualBasic.ControlChars.CrLf
        End If

        'メールの本文をテキストボックスに表示
        Me.textBox1.Text = s + re.MainText

    End Sub
引用ここまで

本文だけなら
        'リーダークラスへ受信したメールデータを渡す
        Dim re As New TKMP.Reader.MailReader(mi.MailData.DataStream, False)
        'メールの本文をテキストボックスに表示
        Me.textBox1.Text = re.MainText
で、取得できると思います。

以上


 
投稿者 nao  (中学生) 投稿日時 2011/11/23 21:21:32
かなり返答が遅れてしまい、申し訳ありません。

YuO様とLINK様。ご協力ありがとうございました。

LINK様のものを参考にさせていただきます。

お二人様本当にありがとうございました。