Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法使用OpenPop.NET从Gmail接收最后一封电子邮件_C#_Email_Openpop - Fatal编程技术网

C# 无法使用OpenPop.NET从Gmail接收最后一封电子邮件

C# 无法使用OpenPop.NET从Gmail接收最后一封电子邮件,c#,email,openpop,C#,Email,Openpop,我正在创建一个控制台应用程序。应用程序的目标是从邮箱获取最后一封带有参数的电子邮件,例如:If is from“example@gmail.com并包含“测试”的主题,使一些东西。也就是说,每当收到具有这些特征的新电子邮件时,它都会有所作为。每封邮件只发送一次 首先,该应用程序会将已经收到的电子邮件ID添加到列表中。然后,每隔20秒,应用程序将查看是否有新的电子邮件,如果有,将查看是否包含必要的特征。如果它具有这些特征,它将执行某些操作,否则,它将继续检查邮箱,直到出现一些电子邮件 class

我正在创建一个控制台应用程序。应用程序的目标是从邮箱获取最后一封带有参数的电子邮件,例如:If is from“example@gmail.com并包含“测试”的主题,使一些东西。也就是说,每当收到具有这些特征的新电子邮件时,它都会有所作为。每封邮件只发送一次

首先,该应用程序会将已经收到的电子邮件ID添加到列表中。然后,每隔20秒,应用程序将查看是否有新的电子邮件,如果有,将查看是否包含必要的特征。如果它具有这些特征,它将执行某些操作,否则,它将继续检查邮箱,直到出现一些电子邮件

class Program
{
    public class Email
    {
        public string Id { get; set; }
        public string Assunto { get; set; }
        public string De { get; set; }
        public string Para { get; set; }
        public DateTime Data { get; set; }
        public string ConteudoTexto { get; set; }
        public string ConteudoHtml { get; set; }
    }

    private static OpenPop.Pop3.Pop3Client _client = new OpenPop.Pop3.Pop3Client();
    private static List<string> _emailsProcessados = new List<string>();
    private static ManualResetEvent _quitEvent = new ManualResetEvent(false);

    private static void Autenticar()
    {
        if (_client.Connected)
        {

            _client.Disconnect();
        }
        _client.Connect("pop.gmail.com", 995, true);//Faz a conexão ao Gmail               
        _client.Authenticate("email@gmail.com", "password");//Autenticação do utilizador
        Console.WriteLine("Connected");
    }



    static void Main(string[] args)
    {            
        Console.CancelKeyPress += (s, e) => {
            _quitEvent.Set();
        };

        MarcarTodosOsEmailsExistentesComoProcessados();
        var timer = new Timer(ProcessarEmails, null, 0, 20000);
        _quitEvent.WaitOne();                        
    }

    private static void MarcarTodosOsEmailsExistentesComoProcessados()
    {
        Autenticar();
        var messageCount = _client.GetMessageCount();

        for (int i = messageCount; i > 0; i--)
        {
            var uid = _client.GetMessageUid(i);
            if (!_emailsProcessados.Contains(uid))
            {
                _emailsProcessados.Add(uid);
            }
        }
    }

    private static void ProcessarEmails(object p)
    {            
        var messageCount = _client.GetMessageCount();
        for (int i = messageCount; i > 0; i--)
        {
            var headers = _client.GetMessageHeaders(i);
            if (headers.From.Address.Equals("emailsender@gmail.com") && headers.Subject.Contains("test"))
            {
                var uid = _client.GetMessageUid(i);
                if (!_emailsProcessados.Contains(uid))
                {
                    Console.WriteLine("New email received");
                    _emailsProcessados.Add(uid);
                }
            }
        }
    }
}
类程序
{
公共类电子邮件
{
公共字符串Id{get;set;}
公共字符串Assunto{get;set;}
公共字符串De{get;set;}
公共字符串Para{get;set;}
公共日期时间数据{get;set;}
公共字符串ConteudoTexto{get;set;}
公共字符串ConteudoHtml{get;set;}
}
私有静态OpenPop.Pop3.Pop3Client _client=new OpenPop.Pop3.Pop3Client();
私有静态列表_emailsProcessados=new List();
专用静态手动复位事件_quitEvent=新手动复位事件(假);
私有静态void Autenticar()
{
如果(_client.Connected)
{
_client.Disconnect();
}
_client.Connect(“pop.gmail.com”,995,true);//Faz a conexãao gmail
_客户端身份验证(“email@gmail.com“,”密码“;//Autenticação do utilizador
控制台。写入线(“连接”);
}
静态void Main(字符串[]参数)
{            
Console.CancelKeyPress+=(s,e)=>{
_quitEvent.Set();
};
MARCARTODOSOSEMAILSISTENTESCOMOPROCESSADOS();
var timer=new timer(ProcessarEmails,null,0,20000);
_quitEvent.WaitOne();
}
私有静态void marcartodososemailseListentesComoprocessados()
{
Autenticar();
var messageCount=_client.GetMessageCount();
对于(int i=messageCount;i>0;i--)
{
var uid=\u client.GetMessageUid(i);
如果(!\u emailsProcessAddos.Contains(uid))
{
_emailsProcessados.Add(uid);
}
}
}
专用静态无效处理邮件(对象p)
{            
var messageCount=_client.GetMessageCount();
对于(int i=messageCount;i>0;i--)
{
var headers=\u client.GetMessageHeaders(i);
if(headers.From.Address.Equals(“emailsender@gmail.com“”&&headers.Subject.Contains(“测试”))
{
var uid=\u client.GetMessageUid(i);
如果(!\u emailsProcessAddos.Contains(uid))
{
Console.WriteLine(“收到新电子邮件”);
_emailsProcessados.Add(uid);
}
}
}
}
}
我正在使用OpenPop.NET。 此库不会自动更新邮箱,因此必须重新验证才能更新邮箱

如果有人想看的话,这是我的应用程序


希望你们能帮助我。如有任何问题,请提问。

您声明“此库不会自动更新邮箱,因此必须重新验证才能更新邮箱。”但随后您不会在
ProcessarEmails
功能中重新验证……谢谢!它已经起作用了!