web-dev-qa-db-fra.com

Envoi de courrier à l'aide de SMTP localhost

J'essaie de configurer le serveur SMTP sur IIS pour l'envoi de courrier. Le serveur SMTP est destiné à être utilisé par le code ASP.NET en C #. 

J'utilisais précédemment gmail smtp dans lequel j'ai fourni smtp.gmail.com en tant qu'hôte avec port sécurisé et mon gmail uid/pwd. Cela a bien fonctionné. Voici le code utilisé pour le faire.

SmtpClient smtpClient = new SmtpClient();
smtpClient.UseDefaultCredentials = false;
smtpClient.Host = "smtp.gmail.com";
smtpClient.Port = 587;
smtpClient.Credentials = new NetworkCredential(uname,pwd);
smtpClient.EnableSsl = true;
smtpClient.Send(mailMessage);

Maintenant, je prévois d'utiliser le serveur SMTP localhost sur IIS, quelles valeurs dois-je donner pour les paramètres UseDefaultCredentials et Credentials. J'attribuerai la valeur false à EnableSsl car il s’applique au port 25.

En outre, quelle pourrait être la configuration de serveur virtuel SMTP la plus simple?.

23
pencilslate

Je pense que dans localhost, vous pouvez utiliser:

SmtpClient smtpClient = new SmtpClient();
smtpClient.UseDefaultCredentials = true;
smtpClient.Send(mailMessage);
15
Natim

Lorsque vous utilisez le service SMTP IIS local, définissez DeliveryMethod sur PickupDirectoryFromIis. Par exemple:

  smtpClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;

Cela contourne totalement la couche réseau et écrit les messages directement sur le disque. C'est beaucoup plus rapide que de passer par le protocole SMTP bavard.

Lorsque vous utilisez le code ci-dessus, cela signifie que vous pouvez vous débarrasser de cette partie de votre code:

smtpClient.UseDefaultCredentials = false;
smtpClient.Host = "smtp.gmail.com";
smtpClient.Port = 587;
smtpClient.Credentials = new NetworkCredential(uname,pwd);
smtpClient.EnableSsl = true;
27
dave wanta

Cela dépend de la façon dont vous configurez le serveur SMTP. Vous n'aurez peut-être pas besoin d'utiliser des informations d'identification et configurez simplement le serveur pour n'accepter que les connexions locales.

3
Joel Coehoorn

Avez-vous essayé d'activer le relais?

Rechercher le gestionnaire IIS6 (j'ai constaté que la recherche de IIS pouvait générer 2 résultats) accédez aux propriétés du serveur SMTP, puis sur "Accès", puis sur le bouton de relais. 

Ensuite, vous pouvez sélectionner tout ou ne permettre que certaines adresses IP comme 127.0.0.1.

SMTP Relay

2
Lee Englestone

Tx Natim, ce que vous dites a fonctionné pour moi. Demandez à notre application intranet utilisant l'authentification intégrée avec notre serveur Exchange 2007:

Dim msg As New MailMessage()
Dim smtp As SmtpClient

msg.From = New MailAddress(strFrom)
msg.To.Add(strTo)
msg.Subject = strSubject
msg.Body = strBody

smtp = New SmtpClient("ServerName")
smtp.UseDefaultCredentials = True
smtp.Send(msg) 
1
mahalie

Si vous voulez tester les emails dans localhost, il suffit de télécharger l’outil papercut https://papercut.codeplex.com/

et changez hostname en localhost comme ci-dessous. Papercut capture tous les courriels qui envoient en utilisant localhost.

  smtpClient.UseDefaultCredentials = false;
    smtpClient.Host = "localhost";
    smtpClient.Port = 587;
    smtpClient.Credentials = new NetworkCredential(uname,pwd);
    smtpClient.EnableSsl = true;
0
DinP