ImapX不给我电子邮件主题/消息信息:

问题描述:

listBox1.Items.Add的行(从+“:”+ x.Subject);是什么,是不是返回所需的结果,它增加了“:”而不是“名姓:主题标题”ImapX不给我电子邮件主题/消息信息:

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"; } 
    } 
} 

这不是除了冒号返回任何东西,它应该返回一个显示名称:消息主题

+0

可能重复(http://stackoverflow.com/questions/15462004/cannot-implicitly-convert-type-in​​t-to -tasksint) – 2013-03-18 18:33:56

+0

请不要发布相同的问题,因为你没有得到回应。答复将以重复方式结束。 – 2013-03-18 18:34:19

+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。另外,与论坛网站不同,我们不使用“谢谢”或“任何帮助表示赞赏”,或者在[so]上签名。请参阅“[应该'嗨','谢谢',标语和致敬从帖子中删除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be ()从目录中删除) – 2013-03-18 18:39:42

在您可以检索消息详细信息(如“from”,“subject”等)之前,首先需要调用消息的Process()。如果您查看source code for 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"; } 
} 
的[无法隐式转换类型“诠释”到“......任务 ”]
+0

'Process()'现在已被弃用 - 所以我认为它现在会自动为你执行 – 2014-01-02 01:20:56