TKMP.DLLを使用してメールを受信したい(.NET)
投稿者 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 各プロパティを使って,
色々と本文や添付ファイルなどを取得できそうです。
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
で、取得できると思います。
以上
[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様のものを参考にさせていただきます。
お二人様本当にありがとうございました。
YuO様とLINK様。ご協力ありがとうございました。
LINK様のものを参考にさせていただきます。
お二人様本当にありがとうございました。
ただし、本文を受信するコードがよくわかりません。コードからどなたか教えて下さい。
なるべくこのDLLを使用したいのですが、もし他に良いDLLがあれば教えて下さい。
環境はMicrosoft Visual Basic 2010 Expressです。