Уведомлять клиента C #, когда SMTP-сервер получал новое письмо

Я хочу получить все электронные письма в моем приложении ASP.NET, которые имеют определенный CC-получатель. Чтобы использовать это для будущих электронных писем, я не хотел, чтобы все время опроса, чтобы получить их. Но я не могу найти способ, как я могу использовать push, чтобы получить электронные письма мгновенно. Их любые рамки в 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...
    }

19
задан skipper 9 September 2011 в 12:16
поделиться