我正在创建一个控制台应用程序。该应用程序的目标是从邮箱中获取最后一封带有参数的电子邮件,例如:如果来自“example@gmail.com”并且主题包含“test”,则进行一些操作。也就是说,每当收到具有这些特征的新电子邮件时,它都会做一些事情。每封电子邮件仅一次。
首先,该应用程序会将已收到的电子邮件 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);
}
}
}
}
}
我正在使用 OpenPop.NET。此库不会自动更新邮箱,因此需要重新验证才能使邮箱更新。
如果有人想看看,这是我的应用程序。
希望你们能帮助我。有任何问题,尽管问。