2010-05-24 7 views
1

J'ai récemment acheté un nouvel ordinateur, et maintenant mes e-mails ne sont jamais envoyés, et il n'y a JAMAIS aucune exception levée ou quoi que ce soit.SmtpClient.SendAsync() ne fonctionne plus

Quelqu'un peut-il fournir des échantillons qui fonctionnent avec la classe SmtpClient? Toute aide sera grandement appréciée.

Merci

Mises à jour


Ok - J'ai ajouté titres de compétence. Et peut envoyer avec succès le courrier électronique de manière synchrone. Mais je ne peux toujours pas les envoyer de manière asynchrone.

Old: Après avoir essayé d'envoyer synchroniquement e-mail, je reçois l'exception suivante:

La transaction a échoué. La réponse du serveur était:

5.7.1 <[email protected]>: Accès relais refusé.

Répondre

0

Vous pouvez d'abord essayer la méthode Send synchrone pour vérifier que tout est correctement configuré avec le serveur SMTP et que vous ne recevez aucune exception:

var client = new SmtpClient("smtp.somehost.com"); 
var message = new MailMessage(); 
message.From = new MailAddress("[email protected]"); 
message.To.Add(new MailAddress("[email protected]")); 
message.Subject = "test"; 
message.Body = "test body"; 
client.Send(message); 

Remarque: Dans .NET 4 SmtpClient outils IDisposable alors assurez-vous de l'inclure dans une instruction using.

+0

Merci beaucoup; J'essaye ceci maintenant. J'ai déjà essayé mais mon code était différent, donc je vais essayer à votre façon. –

+0

Ok, j'ai une exception: la transaction a échoué. La réponse du serveur était: 5.7.1 <[email protected]>: Accès relais refusé - Je vais mettre à jour ma question avec les progrès. Je n'ai aucune idée de ce que cela signifie –

+1

Cela signifie que le serveur SMTP que vous utilisez n'est pas configuré pour relayer les mails vers les serveurs en amont. Si vous utilisez IIS vous pouvez jeter un oeil à cet article: http://support.microsoft.com/kb/293800 –

1

Vous pouvez envoyer du courrier via Async(). Comment signifie que vous devez suivre le code ci-dessous,

smtpClient.SendCompleted += new SendCompletedEventHandler(smtpClient_SendCompleted); 
smtpClient.SendAsync(mailMessage, mailMessage); 

et, si vous utilisez async, vous devez aussi le gestionnaire d'événements comme,

static void smtpClient_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) 
    { 
     //to be implemented   
    } 

En utilisant cela, vous pouvez envoyer du courrier.

Questions connexes