2009-10-13 11 views
21

J'essaie de configurer le serveur SMTP sur IIS pour l'envoi de mails. Le serveur SMTP est destiné à être utilisé par le code ASP.NET en C#. J'ai déjà utilisé gmail smtp dans lequel j'ai fourni le smtp.gmail.com en tant qu'hôte avec le port sécurisé et mon uid/pwd gmail. Cela a bien fonctionné. Voici le code utilisé pour le faire.Envoyer un message en utilisant localhost SMTP

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 devrais-je donner les paramètres UseDefaultCredentials et de vérification des pouvoirs. J'attribuerai false à EnableSsl car il se trouve sur le port 25.

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

Répondre

14

Je pense que dans localhost vous pouvez utiliser:

SmtpClient smtpClient = new SmtpClient(); 
smtpClient.UseDefaultCredentials = true; 
smtpClient.Send(mailMessage); 
+0

Cela ne fonctionne pas. J'ai une erreur "Hôte SMTP inconnu" – lenden

+0

Avez-vous démarré le service SMTP IIS? – Natim

+0

oui, mais ça ne marche toujours pas (j'ai win8, mais si j'ai bien compris, j'ai tout activé à droite). devrais-je écrire smth comme "" à la config web? il est encore "hôte smtp inconnu", si je viens d'écrire ces 3 lignes – lenden

3

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

+0

@Joel: Ma configuration du serveur SMTP: Authentification: accès anonyme Adresse IP: Non assignée Sécurité sortante: l'accès anonyme Curieux, si cela est une configuration correcte pour l'envoi de mails sans informations d'identification. – pencilslate

+0

Voilà une question pour serverfault. –

26

Lorsque vous utilisez le service SMTP IIS local, définissez le DeliveryMethod à 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 en utilisant 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; 
+4

Cette réponse est la bonne pour utiliser le répertoire de collecte IIS local. Comme il ne fait qu'écrire un fichier, il n'utilisera aucune information d'identification et IIS l'enverra pour vous. –

1

Tx NATIM, ce que vous dites travaillé pour moi. Avoir notre application intranet en utilisant auth intégré avec notre serveur d'échange 2007 maintenant:

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) 
2

Avez-vous essayé d'activer le relais?

Trouver gestionnaire IIS6 (j'ai trouvé que la recherche d'IIS peut retourner 2 résultats) aller aux propriétés du serveur SMTP, puis «Accès», puis appuyez sur le bouton de relais.

Ensuite, vous pouvez sélectionner tout ou seulement permettre à certains IP est comme 127.0.0.1

SMTP Relay

+0

J'utilise CDOSYS et depuis le serveur où ce serveur virtuel est installé, les courriels sont envoyés en douceur, mais lorsque j'essaie mon utilitaire depuis le poste de travail, j'obtiens le message 'Échec du transport pour se connecter au serveur'. une idée? ce que j'ai besoin de changer dans mon code pour que Workstation puisse également utiliser ce serveur SMTP virtuel et envoyer des emails. – elmo

0

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

et le changement hostname à localhost comme ci-dessous. Papercut capture tous les emails envoyés en utilisant localhost.

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

aussi smtp4dev est un serveur local de smtp pour des révélateurs. – Birey

Questions connexes