簡體   English   中英

ImapX沒有給我發送電子郵件主題/消息信息:

[英]ImapX not giving me the email subject/message info:

listBox1.Items.Add(from +“:” + x.Subject); 是什么沒有返回期望的結果,而是添加了“:”而不是“ FirstNameLastName:主題標題”

https://imapx.codeplex.com/wikipage?title=示例%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"; }
    }
}

除了冒號外,它不返回任何內容,應該返回顯示名稱:Message Subject

在檢索消息詳細信息(如“來自”,“主題”等)之前,您首先需要在消息上調用Process()。 如果查看ImapX源代碼 ,則會看到Process()涉及對IMAP服務器的服務器調用,以下載消息數據。

看來您在調用Process()之前正在嘗試檢索“發件人”地址,這將返回一個空字符串。 您需要更改順序-首先調用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"; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM