gpt4 book ai didi

c# - 通知 C# 客户端,当 SMTP 服务器收到新邮件时

转载 作者:IT王子 更新时间:2023-10-29 04:49:53 27 4
gpt4 key购买 nike

我想在我的 ASP.NET 应用程序中获取所有具有特定抄送收件人的电子邮件。为了将其用于 future 的电子邮件,我不想一直轮询以获取它们。但我找不到办法,如何使用推送立即获取电子邮件。他们是否有任何 C# 框架可以帮助我解决这个问题?

我想将我的应用程序连接到邮件服务器并注册方法“X”。总是当新消息到达邮件服务器时,必须通知我的应用程序并且我的应用程序应该执行方法“X”。

我希望这样的代码是可能的:

void Application_Start() 
{
...
ConnectWithTheSmtpServer();
RegisterMethodForNotification(DoSomethink);
...
}
void DoSomethink(Mail newMail)
{
// Do Somethink with the mail
}

编辑:

我是用 MailSystem.Net 做的.它工作得很好并且很容易实现。

示例代码:

void Application_Start() 
{
var worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(StartIdleProcess);

if (worker.IsBusy)
worker.CancelAsync();

worker.RunWorkerAsync();
}

private void StartIdleProcess(object sender, DoWorkEventArgs e)
{
if (_imap != null && _imap.IsConnected)
{
_imap.StopIdle();
_imap.Disconnect();
}

_imap = new Imap4Client();
_imap.ConnectSsl(server-name, 993);
_imap.Login(username, passwort);

var inbox = _imap.SelectMailbox("INBOX");

_imap.NewMessageReceived += new NewMessageReceivedEventHandler(NewMessageReceived);

inbox.Subscribe();

_imap.StartIdle();
}

public static void NewMessageReceived(object source, NewMessageReceivedEventArgs e)
{
// Do something with the source...
}

最佳答案

您从错误的角度来处理这个问题。

SMTP 不支持接收邮件(别管 PUSH 邮件)。 POP3 可用于检索邮件,但它也不支持 PUSH(因此您必须拉取邮件)。

IMAP4 IDLE扩展是最常被称为 PUSH 邮件的东西——所以你需要找到一个支持 IMAP4 IDLE 的 C# 库。我找到了一些可以帮助您朝着正确方向前进的信息(没有理由在此处重复):

在选择需要支持 IDLE 的解决方案时请记住。我真的很喜欢 MailSystem.Net 的样子因为它满足您的要求。

请记住,您的邮件服务器还需要启用 IMAP4 和 IMAP4 IDLE。一些邮件服务器不支持它,因此您可能运气不佳(并且必须使用 POP3 拉取)。

关于c# - 通知 C# 客户端,当 SMTP 服务器收到新邮件时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7358322/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com