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

ski*_*per 19 .net c# email push

我想在我的ASP.NET应用程序中获取具有特定CC收件人的所有电子邮件.要将此用于将来的电子邮件,我不想一直轮询来获取它们.但我找不到办法,如何使用push立即收到电子邮件.他们在C#中的任何框架都可以帮助我吗?

我想将我的应用程序连接到邮件服务器并注册方法"X".总是当新邮件到达邮件服务器时,我的应用程序必须得到通知,我的应用程序应该执行方法'X'.

我希望这可以用这样的代码:

void Application_Start() 
{
    ...
    ConnectWithTheSmtpServer();
    RegisterMethodForNotification(DoSomethink);
    ...
}
void DoSomethink(Mail newMail)
{
    // Do Somethink with the mail
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我用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...
    }
Run Code Online (Sandbox Code Playgroud)

Jon*_*son 17

你是从错误的角度接近这个.

SMTP不支持接收邮件(更不用说PUSH邮件)了.POP3是您可以用来检索邮件的,但它也不支持PUSH(因此您必须提取邮件).

IMAP4 IDLE扩展是大部分称之为PUSH邮件-所以你需要找到一个支持IMAP4 IDLE C#库.我找到了一些可以让你朝着正确的方向前进的信息(没有理由在这里复制它):

选择需要支持IDLE的解决方案时请记住.我非常喜欢MailSystem.Net的外观,因为它满足您的要求.

请记住,您的邮件服务器还需要启用IMAP4和IMAP4 IDLE.有些邮件服务器不支持它,所以你可能运气不好(并且必须使用POP3拉动).