2010-01-29 2 views
2

En utilisant ce code, je peux envoyer des emails à des personnes. Cependant, chaque fois que j'appuie sur le bouton envoyer, je pense me reconnecter, correct?Existe-t-il un moyen de pérenniser la session de messagerie électronique dans une application C#?

Existe-t-il un moyen de pérenniser ma session de connexion, ou est-ce comme cela a toujours été fait ("je fais une hypothèse de débutant")? Chaque session SMTP commence généralement par l'authentification.

 var client = new SmtpClient("smtp.gmail.com", 587) 
     { 
      Credentials = new NetworkCredential("[email protected]", "password"), 
      EnableSsl = true 
     }; 
     client.Send("[email protected]", "[email protected]", "test", "testbody"); 
     Console.WriteLine("Sent"); 
     Console.ReadLine(); 
+0

Session de connexion de quoi? Windows, application web, ...? –

Répondre

3

Le code que vous avez est bon. Oui, le service smtp envoie les informations d'identification au serveur smtp chaque fois que vous envoyez l'email. Du point de vue du codage, c'est la façon préférée de faire les choses. Si vous envoyez des e-mails par lots, vous devez simplement placer l'appel de la méthode .Send dans la boucle pendant que le nouvel appel SmtpClient est au-dessus.

Vous ne voulez laisser la connexion ouverte assez longtemps pour faire le travail, puis vous le fermez. Sinon, vous risquez de faire exploser l'application ou de fermer la connexion ultérieurement. Les serveurs n'ont qu'un nombre limité de connexions qu'ils peuvent gérer. Si la plupart des applications les laissaient ouvertes pendant de longues périodes, les autres utilisateurs auraient du mal à y entrer.

La plupart des clients de messagerie, ouvrent la connexion, envoient des e-mails dans la boîte d'envoi, saisissent les nouveaux messages, puis ferment la connexion. . Quand une minuterie s'éteint, elle refera le processus.

Outlook lié à Exchange fonctionne légèrement différemment car il existe un composant push (à partir du serveur).

+0

Merci, cette réponse a été très instructive et quand je la lis, ça semble logique d'ouvrir une connexion à chaque fois. Merci encore. :RÉ –

1

Autant que je sache, il n'y a aucun moyen de garder une session ouverte à un serveur SMTP. Il est cependant possible d'envoyer un certain nombre de courriels dans un lot, c'est probablement ce qui se passe lorsque vous utilisez un client de messagerie.

Questions connexes