SmtpClient obtient le résultat du serveur lors de l'envoi
La SmtpClient envoyer méthode renvoie void. Est-il possible d'obtenir la réponse du serveur? Dois-je supposer qu'il a réussi à moins qu'il déclenche une exception?
La classe, je fais allusion à... http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx
source d'informationauteur BZink | 2011-09-01
Vous devez vous connecter pour publier un commentaire.
Pour répondre à votre deuxième point, oui, tout ce que vous pouvez faire est de supposer qu'il est réussi - ce qui signifie qu'il a reçu le message au serveur et le serveur a accepté, sauf si vous obtenez une exception.
Vous le savez probablement déjà, le reste de cela, mais juste au cas où...
À partir de là, le courriel pourrait se perdre et de ne pas livrés n'importe quel nombre de façons. Votre serveur peut accepter et décider de ne pas les envoyer, ou de l'accepter, et à perdre de la puissance avant de s'écraser. Il peut être bloqués par un filtre anti-spam le long de la route, etc.
Vous pouvez penser à un e-mail comme étant similaire à la régularité de l'article de courrier en ce qu'il passe par plusieurs mains entre l'expéditeur et le destinataire. À partir de votre code, vous pouvez seulement de confirmer qu'il a obtenu pour le serveur SMTP que vous utilisez pour envoyer, ce qui est similaire à la remet au scrutateur au bureau de poste. Vous ne savez pas (ou avez besoin de savoir) comment le message est acheminé à partir de là. il pourrait être en l'air, le sol, ou pigeon voyageur. Vous êtes hors de l'équation - vous n'avez pas besoin de savoir comment il est envoyé, c'est juste que vous avez confiance qu'ils savent comment l'envoyer. (La même chose peut être dit pour un e-mail.)
Si vous avez besoin pour confirmer que le destinataire l'a ouvert, il y a des façons de l'incorporation d'une image dans un message HTML sur votre serveur et de suivi dans les journaux, quand l'image est accessible, etc. (Google e-mail de suivi et de l'e-mail ouvert de suivi)
Sur l'autre main...
Si le serveur rejette, alors vous n'obtenez pas une réponse du serveur dans une manière de parler - il devrait y avoir un code d'erreur et une description de l'erreur, que vous pouvez utiliser pour résoudre les problèmes de pourquoi il ne l'a pas fait, ou utiliser la gestion des erreurs pour en essayer un autre itinéraire, etc.
Vous pouvez utiliser SendCompleted Événement pour vérifier que votre smtpclient fonctionne très bien comme cela:
http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.sendcompleted.aspx
Mais vous ne pouvez pas obtenir la confirmation que votre message a atteint le destinataire, car il peut coincé dans n'importe quel serveur/filtre dans le message de la chaîne.
Vous supposez qu'il a réussi à moins qu'il en jette... même si le succès dans ce cas seulement qu'elle a été acceptée par le serveur de messagerie, tout le reste est alors au serveur...
SI vous voulez un peu de contrôle que vous pouvez utiliser
SendAsync
et crochet de laSendCompleted
événement...