2009-07-31 2 views
0

Ich habe den folgenden Code, aber ich bekomme eine Ausnahme, dass ein SMTP-Host nicht definiert ist. Wenn ich dies auf meinem lokalen Computer im Visual Studio ausprobiere, was muss ich tun, um E-Mails von meinem Computer aus senden zu können? Muss ich einen Windows-Dienst einschalten?Senden von E-Mail mit .NET

+0

Stellen Sie sicher, dass Sie die MailMessage ablegen, wenn Sie fertig sind. –

Antwort

8

Sie müssen den SMTP-Host so einstellen, dass er auf einen tatsächlichen SMTP-Server verweist. Eine Option besteht darin, den SMTP-Dienst auf Ihrem eigenen Computer auszuführen, Sie können jedoch auch auf den Server Ihres Internetdienstanbieters zeigen.

bearbeiten

Als pcampbell und Skeolan erwähnt, wird der tatsächliche Wert in app.config gehen sollte. Ich bin mir nicht sicher, ob localhost eine Ausnahme wäre: Es hängt davon ab, ob Sie die Möglichkeit haben wollen, keinen lokalen Server zu betreiben.

7

Sie werden den SMTP-Host hier angeben müssen:

string smtpHost = "localhost"; 
//or go to your config file 
smtpHost = ConfigurationManager.AppSettings["MySmtpHost"].ToString(); 

SmtpClient c = new SmtpClient(smtpHost); 
+4

besser noch, ziehen Sie die tatsächliche Zeichenfolge "stmpHost" in eine app.config oder web.config, damit Sie sie für verschiedene Bereitstellungen ändern können. Dann könnten Sie "localhost" für die Entwicklung verwenden (vorausgesetzt, Sie führen einen [virtuellen?] SMTP-Dienst auf Ihrem lokalen Rechner aus), haben aber immer noch die Möglichkeit, einen externen E-Mail-Server später anzugeben, ohne erneut kompilieren zu müssen. – Skeolan

+1

Definiere es definitiv in der app.config. Es muss jedoch nicht so vorgegangen werden, als wäre es eine Verbindungszeichenfolge. Machen Sie einfach eine Einstellung oder verwenden Sie die traditionelle API. –

1

Sie müssen den SMTP-Relay definieren:

SmtpClient c = new SmtpClient("relay.yourdomain.com"); 

oder wenn Sie das Relais lokal ausführen:

SmtpClient c = new SmtpClient("localhost"); 
1

Sie sollten diesen Abschnitt ändern:

SmtpClient c = new SmtpClient(); 
// Either specify a SMTP server above, or set c.Host 
c.Send(msg); 

Sie müssen angeben, welcher SMTP-Server zum Senden dieser Nachricht verwendet werden soll. Wenn Sie einen SMTP-Server lokal installieren, könnte dies localhost sein - ansonsten müssen Sie jedoch einen Postausgangsserver einrichten.

0

Hier ist der Code, den ich für das Senden von E-Mail mit C# verwende. Ich habe auch einen Code auskommentiert, um ihn lokal in eine Datei zu senden, wenn Sie ihn brauchen.

 SmtpClient smtp = new SmtpClient(smtpServer, portNumber); 
     // Disable SSL when saving to directory. 
     smtp.EnableSsl = true; 
     smtp.Credentials = new NetworkCredential(mailFrom, password); 

     // Set mail to be delivered to a folder 
     //smtp.PickupDirectoryLocation = @"C:\mail\Send"; 
     //smtp.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;