【发布时间】:2014-02-05 20:52:16
【问题描述】:
using System;
using Limilabs.Mail;
using Limilabs.Client.POP3;
class Program
{
static void Main(string[] args)
{
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\*******\Desktop\WriteLines.txt", true)){
using (Pop3 pop3 = new Pop3())
{
Console.WriteLine("Connecting...");
pop3.ConnectSSL("pop3.live.com"); // or ConnectSSL for SSL
pop3.Login("****@live.com", "****");
// Receive all messages and display the subject
MailBuilder builder = new MailBuilder();
foreach (string uid in pop3.GetAll())
{
IMail email = builder.CreateFromEml(
pop3.GetMessageByUID(uid));
file.WriteLine("Header: " + email.Subject);
file.WriteLine("Message: " + email.Text);
}
pop3.Close();
}
}
}
}
所以我有这个问题,我想让这个程序 24/7 运行;它仍然不完整,但这只是为了展示基本的 C# 检索电子邮件等。我怎样才能在 C# 中有一个循环,只有当新电子邮件到达收件箱时才会停止或强制执行任何操作?我希望该程序仅在收到实时发送的电子邮件后实际执行某些操作。我知道我可以一次一张地打印出我的电子邮件,但我希望它能够运行,并且只有在收到新消息时我才希望我做任何事情。例如 idk,如果我要发送一条像干净桌面这样的消息,它会停止并被解析,如果我要制作的另一个程序指定了一个有效的命令序列,那么它将执行该命令,然后继续无休止地循环等待另一个新消息。它基本上是一个 24/7 运行的服务器,只响应新电子邮件。这就是我的目标。非常感谢所有帮助。
【问题讨论】:
-
“我怎样才能在 C# 中创建一个循环,只有当新电子邮件到达收件箱时才会停止或强制执行任何操作。” – 这是您的电子邮件库必须直接支持的东西。 (我实际上认为这在 POP3 中是不可能的。)否则你唯一的选择就是轮询。
-
相当大量的代码,后面是一堵墙。这是一个难以阅读的问题。从将文本分成段落开始?此外,请确保您的代码示例最少(同时仍包含所有相关细节)。