2016-01-18 5 views
0

Я пытаюсь прочитать тело электронной почты из gmail в C# с помощью OpenPop.dll. Я пробовал gmail api, но я никогда не мог заставить его работать, поэтому я попробовал это. В любом случае, вот мой код и ошибка, которую мне дали.Чтение gmail с использованием ошибок OpenPop.dll C#

  using (Pop3Client client = new Pop3Client()) 
      { 
       client.Connect("pop.gmail.com", 995, true); 
       client.Authenticate("[email protected]", "xxxxxxxx", AuthenticationMethod.UsernameAndPassword); 
       int messageCount = client.GetMessageCount(); 
       List<OpenPop.Mime.Message> allMessages = new List<OpenPop.Mime.Message>(messageCount); 
       for (int d = messageCount; d > 0; d--) 
       { 
        allMessages.Add(client.GetMessage(i)); 
       } 

Ошибка, указанная на странице allMessages.Add. (Среда)

An unhandled exception of type 'OpenPop.Pop3.Exceptions.InvalidUseException' occurred in OpenPop.dll 

Additional information: The messageNumber argument cannot have a value of zero or less. Valid messageNumber is in the range [1, messageCount] 
+0

** Аргумент messageNumber не может иметь значение, равное нулю или меньше ** кажется, что вы должны начать с индексом 1, а не 0 – ymz

ответ

1

Вы, вероятно, с помощью этого кода внутри другого for цикла и перепутали переменный индекс. параметр в методе GetMessage должен быть d, а не i. Он должен выглядеть следующим образом:

using (Pop3Client client = new Pop3Client()) 
{ 
    client.Connect("pop.gmail.com", 995, true); 
    client.Authenticate("[email protected]", "xxxxxxxx", AuthenticationMethod.UsernameAndPassword); 
    int messageCount = client.GetMessageCount(); 
    List<OpenPop.Mime.Message> allMessages = new List<OpenPop.Mime.Message>(messageCount); 
    for (int d = messageCount; d > 0; d--) 
    { 
      allMessages.Add(client.GetMessage(d)); 
    } 
} 
+0

Мои извинения должны не видели. Спасибо :) – dseds