Es gibt also einige großartige Beispiele dafür, wie Sie mit Mailkit eine E-Mail über SMTP versenden können.Mailkit Senden und Prüfen von aysynchronem SMTP
Regel mit der Endung:
client.Authenticate(theSMTPUsername,theSMTPPassword);
client.Send(emailMessage);
client.Disconnect(true);
Dies ist jedoch nicht gut, wenn async benötigt wird:
client.Authenticate(theSMTPUsername,theSMTPPassword);
client.SendAsync(emailMessage);
client.Disconnect(true);
jedoch, was ich wissen möchte, wenn ein asynchrones Senden abgeschlossen ist, oder wenn es gelingt nicht. Unter .Net nativen Bibliotheken wird dies mit einem Callback (Event-Handler) erreicht.
Ist es möglich, einen 'Completed' Callback-Handler für ein MailKit SendAsync zu definieren, und wenn nicht, was ist die beste Vorgehensweise, um festzustellen, ob es erfolgreich war oder nicht.
Dank
Dank für die Lenk. Warten ist schöner, dass ein Rückruf. – Hughgo
Sieht man sich das genauer an, bin ich nicht überzeugt, dass die Lösung funktionieren wird. Warten auf einen asynchronen Aufruf wartet nur auf die Rückkehr des Async-Teils. Dies wird nicht auf das Senden der Nachricht warten. Der obige Code könnte Rennen auslösen und trennen, bevor die Arbeit erledigt ist. Eine bessere Möglichkeit wäre, die * synchronen * APIs zu erwarten. Dies stellt sicher, dass jede Phase durchgeführt wird, bevor Sie fortfahren. – Hughgo
Wenn 'client.Send()' zurückgibt, wurde die Nachricht gesendet. Wenn die Steuerung nach 'await client.SendAsync() 'fortfährt, wird die Nachricht ebenfalls gesendet. Es wird keine Rasse geben. Sie können synchrone APIs nicht erwarten. – jstedfast