Ne peut pas utiliser smtpclient à envoyer de mail avec localhost site iis
J'ai un asp.net mvc application qui s'exécute sur un serveur iis local site web qui est de ne pas envoyer de mail à l'aide de SmtpClient à partir du Système.Net.Mail. J'essaie d'envoyer un mail à mon adresse hotmail et j'obtiens une exception socket. Toute idée de ce que peut être le problème?
using(var message = new MailMessage())
{
message.From = new MailAddress(AdminEmail);
message.To.Add(new MailAddress(to));
message.Subject = subject;
message.Body = body;
message.IsBodyHtml = false;
var mailClient = new SmtpClient();
mailClient.Send(message);
}
Ici est l'exception:
{System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:25
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)}
Je pense que le défaut d'application de la piscine n'a pas accès à intepub\wwwroot. Voici l'erreur que je reçois lorsque j'essaie de tester la connexion:
Le serveur est configuré pour utiliser l'authentification avec un compte d'accès spécifié chemin d'accès physique. Toutefois, le Gestionnaire des services IIS ne peut pas vérifier si le compte intégré a accès. Assurez-vous que l'identité du pool d'applications a accès en Lecture pour le chemin d'accès physique. Si ce serveur est joint à un domaine, et l'identité du pool d'applications est NetworkService ou LocalSystem, vérifier que \$ a accès en Lecture pour le chemin d'accès physique. Puis tester à nouveau les paramètres.
Je pense que c'est une partie de mon problème. J'ai ouvert le Gestionnaire des services internet et de paramétrer le serveur SMTP que localhost, mais il ne fonctionne toujours pas. Est-il autre chose qui doit être configurée?
Pouvez-vous en telnet sur le port 25 sur votre machine locale? Quel système d'exploitation utilisez-vous? Avez-vous un pare-feu sur la machine locale?
Je suis sous vista home premium. J'ai un pare-feu, mais serait-ce la matière puisque la connexion est sortant? Aussi, je ne suis pas sûr de savoir comment commencer avec telnet.
OriginalL'auteur Joe | 2008-11-28
Vous devez vous connecter pour publier un commentaire.
Basé sur vos réponses à mes commentaires ci-dessus Joe, vous n'avez pas de SMTP est activé sur votre machine locale. Vista n'est pas venu avec SMTP.
En tant que tel, vous devrez installer un 3ème partie SMTP application qui fonctionne sous Vista, ou d'utiliser une autre application pour envoyer via, dans ce cas, votre compte Hotmail peut vous permettre d'envoyer des sortants via. Je n'ai pas utiliser Hotmail, donc ne sais pas si elle va ou pas, mais il devrait être quelque chose comme smtp.hotmail.com et vos informations d'identification. Mon compte principal est un compte gmail, donc je peux l'utiliser via smtp.gmail.com et bien sûr, mes informations d'identification.
OriginalL'auteur GregD
Pour le développement en local sur votre machine, vous pouvez également utiliser un dossier de dépôt:
http://www.codersbarn.com/post/2008/11/30/ASPNET-Contact-Form.aspx
OriginalL'auteur IrishChieftain
Plutôt que d'essayer de configuration SMTP en local, pourquoi ne pas vous venez de configurer la connexion SMTP pour envoyer directement via hotmail, il suffit d'ajouter les éléments de configuration pour le web.config pour activer le tout.
Modifier
Je pense que cet article que j'ai écrit tout à l'arrière peut vous aider.
Vous pouvez spécifier les informations d'identification lorsque vous déclarez le client SMTP, OU vous pouvez travailler avec le <système.net> web.section de configuration. ajout d'un lien vers le post
OriginalL'auteur Mitchel Sellers
Essayer de définir explicitement l'hôte de la SmtpClient.
Ex:
SmtpClient courrierclient = new SmtpClient();
courrierclient.Host = "127.0.0.1";
courrierclient.Send(message);
OriginalL'auteur Matt