2010-09-20 3 views
3

J'ai un gros problème avec mon serveur SMTP pour envoyer des emails. C'est souvent tombé.Comment puis-je mettre des e-mails dans une file d'attente lorsque le serveur SMTP est arrêté?

À ce stade, je me sers de ce code:

MailMessage mailMsg = new MailMessage(); 
mailMsg.From = new MailAddress("[email protected]"); 
mailMsg.To.Add("[email protected]"); 
mailMsg.Subject = "..."; 
mailMsg.IsBodyHtml = true; 
mailMsg.BodyEncoding = Encoding.UTF8; 
mailMsg.Body = "Mail"; 
mailMsg.Priority = MailPriority.High; 
SmtpClient client = new SmtpClient(); 
client.Credentials = new NetworkCredential("[email protected]", "password"); 
client.Port = 456;   
client.Host = "smtp.gmail.com"; 
client.EnableSsl = true; 
client.Send(mailMsg); 

Mais, quand mon serveur SMTP est en panne je veux mettre tous les e-mails dans une file d'attente et quand il récupère que je veux les envoyer une fois . Est-il possible de faire cela en C#?

Répondre

2

Le serveur SMTP de Gmail est souvent en panne? C'est étrange. Si le courrier électronique est essentiel, je vous suggère d'utiliser un service de mise en file d'attente local ou de créer le vôtre en fonction du système Microsoft Queuing.

Mais si c'est si important, j'essaierais plutôt de résoudre mon problème SMTP.

+0

Gmail SMTP était juste un exemple. J'utilise ce code avec Gmail SMTP parce que cela fonctionne et ce n'est jamais en panne. Le problème est avec le SMTP local, c'est pourquoi j'ai besoin d'un moyen C# pour mettre les messages dans une file d'attente quand le serveur est en panne ... –

+0

@jeff Si vous utilisez IIS en tant que SMPTP jetez un oeil à MSMQ, envoyez vos messages à MSMQueue au lieu de directement au serveur SMTP. Il est déjà dans le système (ou doit être installé), seulement besoin d'un petit ajustement dans le code;) –

+0

Caspar a raison, écrire dans la file d'attente au lieu de se connecter au service peut aider. Il suffit de stocker l'email complet avec les en-têtes et ainsi de suite dans le répertoire du spool. –