投稿者 hiroyuki  (社会人) 投稿日時 2016/11/26 10:16:38
hiroyukiと申します。

TKMP.DLLを利用してメールのチェックをしたいのですがどのようにコードを書けばいいのかさっぱりわかりません。大変恐縮ですがサンプルのコードを教えていただけないでしょうか。


他の掲示板でも同じ質問をしましたが、「自分で調べるように」と全て断られました。
そこでたどり着いたのがココの掲示板です。
何卒よろしくお願いします。


http://uwa.potetihouse.com/samplecode/tkmp/uidcheck.html
ココのサイトを参考にしました。


Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        '接続情報 
        Dim server As String = "pop.ae.auone-net.jp"
        Dim port As Integer = 110
        Dim userid As String = "a789133385"
        Dim pass As String = "v2wr2ipe"

        'サーバへの接続用クラスを作成する 
        Dim address As System.Net.IPAddress = System.Net.Dns.GetHostByName(server).AddressList(0)
        Dim logon As New TKMP.Net.BasicPopLogon(userid, pass)
        Dim pop As New TKMP.Net.PopClient(logon, address, port)

        '接続開始 
        If Not pop.Connect() Then
            System.Windows.Forms.MessageBox.Show("接続失敗")
            Return
        End If

        'このあたりからわかりません 
        Dim ui As New UID
        'ファイルからUIDを読み込む 
        Dim itm() As String = ReadUID()
        ' 未読メールの取得 
        Dim mails As ArrayList = ui.NoReadMails(pop, itm)
        '未読メールの表示 
        MsgBox(mails.ToString())

        '取得したUIDの保存 
        SaveUID(mails)

        '切断 
        pop.Close()
    End Sub

End Class

Class UID
    '接続済みのクライアントクラスと、読み出し済みUIDリストを引数に渡すと、 
    '未読メールのクラス一覧を返します 
    Public Function NoReadMails(ByVal PopClient As TKMP.Net.PopClient,
                                ByVal ReadUIDList() As StringAs TKMP.Net.MailData()
        '一時格納用のコレクション 
        Dim mails As New System.Collections.ArrayList
        'メールボックスの全てのメールを検査する 
        Dim mail As TKMP.Net.MailData
        For Each mail In PopClient.MailDatas
            Dim read As Boolean = False
            '読み出し済みUIDと一致するものを確認する 
            Dim UID As String
            For Each UID In ReadUIDList
                If mail.UID.Equals(UID) Then
                    read = True
                    Exit For
                End If
            Next UID
            If Not read Then
                '未読をコレクションに追加する 
                mails.Add(mail)
            End If
        Next mail

        'コレクションから配列へ変換 
        Dim mailarray As TKMP.Net.MailData() =
                           CType(mails.ToArray(GetType(TKMP.Net.MailData)), TKMP.Net.MailData())

        Return mailarray
    End Function
End Class



環境はVS 2015 Community
win7
です。