2012-07-01 3 views
0
public class _Variable 
{ 
    public bool MailStat; 
    public Pop3Client pop3; 
    public int lastmailCount; 
    public int currentmailCount; 
    public Message msg; 
    public MessagePart msgPart; 
    public Timer _timer;   
} 

public List<int> _MailReader() 
{ 
    _Variable _var = new _Variable(); 
    try 
    { 
     //HttpContext.Current.Session["Pop3Client"] 

     if (HttpContext.Current.Session["Pop3Client"] == null) 
     { 
      _var.pop3 = new Pop3Client(); 
      _var.pop3.Connect("pop.gmail.com", 995, true); 
      _var.MailStat = _var.pop3.Connected; 
      _var.pop3.Authenticate("[email protected]", "xxxxxxx"); 
      HttpContext.Current.Session["Pop3Client"] = _var.pop3; 
     } 
     else 
     { 
      _var.pop3 = (Pop3Client)HttpContext.Current.Session["Pop3Client"]; 
     } 
     if (_var.MailStat) 
     { 

      //HttpContext.Current.Application["lastmailCount"] = _var.pop3.GetMessageCount(); 
      _var.currentmailCount = _var.pop3.GetMessageCount(); 
      _var.lastmailCount = _global.lastmailCount; 
      if (_var.lastmailCount < _var.currentmailCount) 
      { 
       _global.lastmailCount = _var.currentmailCount; 
       int _diff = _var.currentmailCount - _var.lastmailCount; 
       for (int _loop = _var.currentmailCount; _diff > 0; _diff--) 
       { 
        _var.msg = _var.pop3.GetMessage(_loop-(_diff-1)); 
        _var.msgPart = _var.msg.MessagePart.MessageParts[0]; 
        string bodyPart = _var.msgPart.BodyEncoding.GetString(_var.msgPart.Body).ToString().Trim(); 
        int _result; 
        if (int.TryParse(bodyPart, out _result)) 
        { 
         _global._vbill.Add(Int32.Parse(bodyPart)); 
         _global._vDate.Add(_var.msg.Headers.DateSent.ToString()); 
        } 
       } 
      } 
     } 
     _var.pop3.Dispose(); 
     return _global._vbill; 
    } 
    catch (Exception ex) 
    { 
     return _global._vbill; 
    } 
} 

Я использую OpenPop.dll, а в следующем коде pop.getMessageCount возвращает ноль, даже если в моей учетной записи есть почта.GetMessageCount() возвращает 0 (ноль)

_Variable method содержит все переменные, которые я использовал в коде и в _MailReader. Я просто читаю все свои письма из своего приложения и возвращаюсь в список, но это проблема, когда счетчик всегда равен нулю.

+0

возможно дубликат [OpenPop - Gmail - GetMessageCount() возвращает 0 (ноль)] (http://stackoverflow.com/questions/8519656/openpop-gmail-getmessagecount-returns-0- нуль) –

ответ

2

Это функция сервера gmail pop3. По умолчанию вы можете получать только непрочитанные сообщения. Это означает, что если вы или кто-то еще уже загрузили определенное сообщение один раз, больше не сможете получить его по протоколу pop3.

Чтобы избежать этого, вы должны настроить свою учетную запись gmail. Установите флажок «Включить POP для всей почты (почтовая почта, которая уже загружена)» в разделе «Пересылка и POP/IMAP» в настройках gmail.

Скриншот: http://i.stack.imgur.com/UE7ip.png

Смежные вопросы