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("nithin.testing1@gmail.com", "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 がゼロを返しています。

_Variable メソッドには、コードと _MailReader で使用したすべての変数が含まれています。私は自分のアプリケーションからすべてのメールを読んでリストに戻っているだけですが、これは問題数が常にゼロであることです。

4

1 に答える 1

3

これは、gmail pop3 サーバーの機能です。デフォルトでは、未読メッセージのみを受信できます。つまり、あなたまたは他の誰かが特定のメッセージを一度ダウンロードした場合、そのメッセージを pop3 プロトコルで受信することはできなくなります。

これを回避するには、Gmail アカウントを構成する必要があります。gmailの設定画面の「転送とPOP/IMAP」で「すべてのメール(ダウンロード済みのイベントメール)でPOPを有効にする」にチェックを入れてください。

スクリーンショット: http://i.stack.imgur.com/UE7ip.png

于 2012-07-25T12:00:32.540 に答える