2 Stimmen

Asynchrone E-Mail aus .Net

Ich versuche, eine E-Mail asynchron zu senden, so dass es nicht verlangsamen mein Frontend (Asp.Net MVC).

SmtpClient smtp = new SmtpClient(_mailServer, 25);
smtp.UseDefaultCredentials = true;
MailMessage message = new MailMessage();

// ...etc

smtp.SendA(message); // this works fine

smtp.SendAsync(message, null); // if i change it to this, it doesn't work (mail never appears)

Ich verstehe nicht wirklich, was die 2. param zu SendAsync ist für.

MSDN sagt, dass seine ein Objekt, das an die Methode übergeben wird, die nach Abschluss des Vorgangs aufgerufen wird

Nun, wtf? welche Methode? Also habe ich gerade versucht, die Übergabe von null, wie ich nicht wirklich verstehen, was dies für ist, aber offensichtlich etwas falsch ist.

2voto

Tony Abrams Punkte 4355

Im Wesentlichen handelt es sich dabei um ein Objekt, das Sie im Ereignis "Send completed" übergeben möchten.

Wenn Sie SendAsync verwenden, tritt das Ereignis SendCompleted ein. Sie behandeln dann dieses Ereignis, damit Sie wissen, dass Sie eine weitere E-Mail senden können. Der Hauptgrund dafür ist, dass Sie immer nur eine E-Mail gleichzeitig senden können.

0voto

MetalMikester Punkte 1047

Haben Sie einen Ereignishandler für das Ereignis "SendCompleted" festgelegt? Im MSDN-Beispiel für SmtpClient.SendAsync ist userState nur eine Zeichenfolge, aber sie haben eine Callback-Funktion, die dem SendCompleted-Ereignis zugeordnet ist. Das könnte genau das sein, was hier fehlt.

0voto

Bronumski Punkte 13577

Höchstwahrscheinlich wird Ihre Bewerbung beendet, bevor die E-Mail versandt wurde. Der zweite Parameter wird an den On-Complete-Event-Handler übergeben.

Schauen Sie sich das Beispiel von MSDN an und versuchen Sie es isoliert.

http://msdn.microsoft.com/en-us/library/x5x13z6h.aspx

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X