0

listBox1.Items.Add(from + ": " + x.Subject); の行 望ましい結果が返されていないのは、「FirstNameLastName: Subject title」の代わりに「:」を追加したものです。

https://imapx.codeplex.com/wikipage?title=Sample%20code%20for%20get%20messages%20from%20your%20inbox

およびhttps://imapx.codeplex.com/

    List<Task> m = new List<Task>();
    private async void cmdLogin_Click(object sender, EventArgs e)
    {
        bool result = imapMail.Connection();
        if (result)
        {
            result = imapMail.LogIn(email, password);
            if (result)
            {
                var messes = imapMail.Folders[inbox].Messages;
                foreach (var x in messes)
                {
                    string from = "";
                    foreach (var addresses in x.From)
                    {
                        from = addresses.DisplayName;
                    }
                    listBox1.Items.Add(from + ": " + x.Subject);
                }
                foreach (ImapX.Message msgs in imapMail.Folders[inbox].Messages)
                {
                    m.Add(new Task(new Action(() => msgs.Process())));
                }
                await Task.WhenAll(m);

            }
            else { this.Text = "failed login"; }
        }
        else { this.Text = "Failed connection"; }
    }
}

これはコロン以外は何も返しません。表示名: メッセージの件名を返す必要があります。

4

1 に答える 1

0

メッセージの詳細 ("from"、"subject" など) を取得する前に、まずメッセージで Process() を呼び出す必要があります。ImapXのソース コードを見ると、メッセージ データをダウンロードするために、 Process() に IMAP サーバーへのサーバー呼び出しが含まれていることがわかります。

Process() を呼び出す前に From アドレスを取得しようとしているようで、空の文字列が返されます。順序を変更する必要があります。最初に Process() を呼び出してから、メッセージの詳細を確認してください。

以下のコードを参照してください。私はまだこれをテストしていません。

List<Task> m = new List<Task>();
private async void cmdLogin_Click(object sender, EventArgs e)
{
    bool result = imapMail.Connection();
    if (result)
    {
        result = imapMail.LogIn(email, password);
        if (result)
        {
            foreach (ImapX.Message msgs in imapMail.Folders[inbox].Messages)
            {
                m.Add(new Task(new Action(() => msgs.Process())));
            }
            await Task.WhenAll(m);

            var messes = imapMail.Folders[inbox].Messages;
            foreach (var x in messes)
            {
                string from = "";
                foreach (var addresses in x.From)
                {
                    from = addresses.DisplayName;
                }
                listBox1.Items.Add(from + ": " + x.Subject);
            }
        }
        else { this.Text = "failed login"; }
    }
    else { this.Text = "Failed connection"; }
}
于 2013-07-16T17:10:30.120 に答える