it-swarm.com.de

Senden Sie E-Mails mit localhost SMTP

Ich versuche, den SMTP-Server für das Senden von E-Mails auf IIS einzurichten. Der SMTP-Server soll vom ASP.NET-Code in C # verwendet werden. 

Ich habe vorher gmail smtp verwendet, wobei ich den smtp.gmail.com als Host mit sicherem Port und meinem gmail uid/pwd bereitgestellt habe. Das hat gut funktioniert. Hier ist der Code, der dazu verwendet wird.

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

Jetzt plane ich die Verwendung des localhost SMTP-Servers für IIS, Welche Werte sollte ich für die Parameter UseDefaultCredentials und Credentials angeben. Ich werde EnableSsl "false" zuweisen, da es über Port 25 liegt.

Was könnte auch die einfachste Konfiguration eines virtuellen SMTP-Servers sein?.

23
pencilslate

Ich denke in localhost kann man verwenden:

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

Wenn Sie den lokalen SMTP-Dienst IIS verwenden, setzen Sie die DeliveryMethod auf PickupDirectoryFromIis. Zum Beispiel:

  smtpClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;

Dadurch wird die Netzwerkschicht vollständig umgangen und die Nachrichten werden direkt auf die Festplatte geschrieben. Es ist viel schneller als das gesprächige SMTP-Protokoll.

Wenn Sie den obigen Code verwenden, bedeutet dies, dass Sie diesen Teil Ihres Codes entfernen können:

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

Dies hängt davon ab, wie Sie den SMTP-Server konfigurieren. Möglicherweise müssen Sie überhaupt keine Anmeldeinformationen verwenden und den Server so konfigurieren, dass nur lokale Verbindungen akzeptiert werden.

3
Joel Coehoorn

Haben Sie versucht, das Relais zu aktivieren?

Suchen Sie den IIS6-Manager (ich habe festgestellt, dass die Suche nach IIS möglicherweise 2 Ergebnisse liefert). Gehen Sie zu den SMTP-Servereigenschaften, klicken Sie dann auf "Zugriff" und drücken Sie die Relay-Taste. 

Dann können Sie entweder alle auswählen oder nur bestimmte IP-Adressen wie 127.0.0.1 zulassen

SMTP Relay

2
Lee Englestone

Tx Natim, was du sagst, hat für mich gearbeitet. Besorgen Sie sich jetzt unsere Intranet-App mit integrierter Authentifizierung mit unserem Exchange 2007-Server:

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

Wenn Sie E-Mails in localhost testen möchten, laden Sie einfach das Papercut-Tool https://papercut.codeplex.com/ herunter.

und ändern Sie den Hostnamen wie folgt in localhost. Papercut erfasst alle E-Mails, die mit localhost gesendet werden.

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