はじめまして。初歩的な質問で申し訳ないのですが、現在下記URLのDLLに同梱されているサンプルプログラムをいじりながら勉強しておりまして、実行すると同時にPOPへ接続し、最新のメール本文のみを取得して変数に入れる・・という物を作りたいのですが、やり方が全く分からずに四苦八苦しております。
どなたかお助け願えませんでしょうか。
※業務などで使用する訳ではありません、個人的な勉強用です。
http://hp.vector.co.jp/authors/VA029929/soft/tkm …
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
ほとんど添付されているサンプルと同じですが、コンソールで動いて、現在あるメールを全部読むものをつくってみました。
コンソールプログラムだとイベント駆動ではないので、ちょっとはわかりやすいかもしれません。
サーバーとのやりとりは、Log.txtに書き込むようにしてあります。
Imports System.Collections
Imports System.IO
Module Module1
Public Log As StreamWriter
Sub Main()
Dim PopClient As TKMP.Net.PopClient
Dim UserName As String = "BLUEPIXY", Password As String = "PASSWORD", ServerAddress As String = "pop.mail.server"
Dim bp As New TKMP.Net.BasicPopLogon(UserName, Password)
Dim Address As System.Net.IPAddress = System.Net.Dns.Resolve(ServerAddress).AddressList(0)
Dim Port As Integer = 110
Log = New StreamWriter(File.Open("Log.txt", FileMode.Create, FileAccess.Write))
PopClient = New TKMP.Net.PopClient(bp, Address, Port)
AddHandler PopClient.MessageReceive, AddressOf PopClient_MessageReceive
AddHandler PopClient.MessageSend, AddressOf PopClient_MessageSend
If Not PopClient.Connect() Then
Console.WriteLine("接続失敗")
PopClient.Close()
PopClient = Nothing
Exit Sub
Else
Console.WriteLine("接続成功")
End If
Dim Mails As TKMP.Net.MailData() = PopClient.MailDatas
Dim MailList As New ArrayList
Dim i As Integer
For i = 0 To Mails.Length - 1
Log.WriteLine("受信数 " + (i + 1).ToString() + " / " + Mails.Length.ToString())
Dim Data As TKMP.Net.MailData = CType(Mails(i), TKMP.Net.MailData)
MailList.Add(Data)
Next i
PopClient.KeepAlive = True
Dim x As TKMP.Net.MailData
For Each x In MailList
Call MailDataReadHeader(x)
Call MailDataReadBody(x)
Next
PopClient.Close()
PopClient = Nothing
Log.Close()
End Sub
Private Sub MailDataReadHeader(ByVal MailData As TKMP.Net.MailData)
If Not MailData.ReadHeader() Then
Return
End If
Dim re As New TKMP.Reader.MailReader(MailData.HeaderStream, False)
Dim dateTime As String = New TKMP.Reader.Header.DateTime(re).Value.ToString("yyyy/MM/dd HH:mm")
Dim From As String = re.HeaderCollection("From")
Dim Subject As String = re.HeaderCollection("Subject")
Console.WriteLine("Subject:{0}", Subject)
Console.WriteLine("From:{0}", From)
Console.WriteLine("at:{0}" & ControlChars.CrLf, dateTime)
End Sub
Private Sub MailDataReadBody(ByVal MailData As TKMP.Net.MailData)
If MailData.DataStream Is Nothing Then
AddHandler MailData.BodyDataReceive, AddressOf MailData_DataReceive
Dim GetFlag As Boolean = MailData.ReadBody()
RemoveHandler MailData.BodyDataReceive, AddressOf MailData_DataReceive
If Not GetFlag Then
Return
End If
End If
Dim re As New TKMP.Reader.MailReader(MailData.DataStream, False)
Dim s As String = String.Empty
If re.FileCount <> 0 Then
s += "-------------------------添付ファイル---------------------" + ControlChars.CrLf
For Each f As TKMP.Reader.File In re.FileCollection
s += f.FileName + " (" + f.FileSize.ToString() + "byte)" + ControlChars.CrLf
Next
s += "----------------------------------------------------------" + ControlChars.CrLf
End If
Console.WriteLine(s + re.MainText)
End Sub
Private Sub MailData_DataReceive(ByVal sender As Object, ByVal e As TKMP.Net.DataReceiveArgs)
Dim Data As TKMP.Net.MailData = CType(sender, TKMP.Net.MailData)
Log.WriteLine("受信中 " + e.ReadLength.ToString() + " / " + Data.Length.ToString())
End Sub
Private Sub PopClient_MessageReceive(ByVal sender As Object, ByVal e As TKMP.Net.MessageArgs)
Dim trimChar() As Char = {ChrW(0)}
Log.WriteLine(e.Message.Trim(trimChar))
End Sub
Private Sub PopClient_MessageSend(ByVal sender As Object, ByVal e As TKMP.Net.MessageArgs)
Dim trimChar() As Char = {ChrW(0)}
Log.WriteLine(e.Message.Trim(trimChar))
End Sub
End Module
親切に教えて頂きまして本当に有難うございます!!!!本当に本当に感謝です。ListViewの所でつまづいていたので、コンソールアプリだと分かりやすかったです!本当に有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- IT・エンジニアリング ITエンジニアの勉強時間や勉強方法について 初めまして閲覧いただきありがとうございます。 当方25歳 4 2022/06/09 18:51
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
- 教育・学術・研究 学童保育のアルバイトをしようと思っています。 面接の時に長所と短所を聞かれた時のために考えたんですけ 1 2023/02/18 23:12
- 大学受験 娘の大学受験勉強 6 2022/06/30 19:58
- IT・エンジニアリング IT業界に就職を考えているが適正がないかもしれない 5 2023/06/08 01:22
- 高校受験 3ヶ月で偏差値5あげることはできますか? 中3 私は今年の6月に初めて模試を受け偏差値54、2回目の 0 2022/10/26 15:43
- 国家公務員・地方公務員 公務員試験の数的処理で苦戦しています。 1 2023/01/30 08:56
- JavaScript JavaScriptのif文について 3 2022/07/19 10:35
- 大学・短大 続報 以前大学編入後に生じた問題から、こちらに質問 させていただいたものです。 詳しくご存知ない方に 1 2023/06/24 15:19
- 会社・職場 今後の仕事について 閲覧ありがとうございます。 私は現在28歳の男性です。 自分が向いている仕事、続 3 2022/08/01 12:19
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB2010 Dataset内のDB接続先変更
-
VB6.0のコードによるMySQLへの接続
-
ctfmon.exe。スタック ベースの...
-
コマンドボタンのキャプション...
-
ゆっくりムービーメーカーのエ...
-
audiveris(pdf楽譜を読み込む...
-
VisualStudio2010を速くするには?
-
秀丸マクロについて
-
有効なwin32アプリケーションで...
-
TeraTermマクロの”Link...
-
タスクバーのボタンがオレンジ...
-
XAMPPのメニュー画面までたどり...
-
信長の野望 革新について
-
ソフトの多重起動制限
-
Windowsが起動しなくなってしま...
-
Windows 8 で日本語入力できない
-
HRESULTからの例外:0x8007000B
-
プロシージャエントリポイント
-
GridviewとDataGridviewの違い
-
ノートンのアクティブ化ができない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
OracleInProcServer.XOraSessio...
-
VisualStudioでのプログラミン...
-
System.Net.Sockets.SocketExce...
-
データベース接続/切断の基本的...
-
●Excel VBAからSQLServerのデー...
-
c#のTLS1.2での通信について
-
ローカル側のC#から、リモート...
-
PerlからOracleに接続
-
VB6.0のコードによるMySQLへの接続
-
VB.NET Oracle接続 クライアン...
-
VB.NET ORA-12170
-
Android端末から外部DB(MYSQL...
-
FFFTPでファイル一覧を取得でき...
-
.NETでodbc接続したい。
-
javascriptでSQLite接続
-
ASP.NETのパフォーマンスと接続...
-
Cでデータベース操作
-
Delphi でOracleのデータを表示...
-
VB.netでのMySQLの接続エラーに...
-
Tomcat FireBird(データベー...
おすすめ情報