2009-05-26 12 views
1

Der folgende Code führt mich aus Fehler nach Fehler.ASP.net SMTP-Verbindungsfehler

 MailMessage Enveloppe = new MailMessage(); 

     //emails is an array of strings 
     foreach (string email in emails) 
      Enveloppe.To.Add(email); 

     //Setup message parameters 
     Enveloppe.Subject = "Documentation"; 
     Enveloppe.Body = "Infinitelycoolbodyhere" 
     Enveloppe.From = new MailAddress("[email protected]", "Myname"); 

     //files is an array of strings 
     foreach (string filename in files) { 
      //Add attachments 
      Enveloppe.Attachments.Add(new Attachment(new System.Net.WebClient().OpenRead(filename),filename.Substring(filename.LastIndexOf('/')))); 
     } 

     //Create the smtp client, and let it do its job 
     SmtpClient Mailman = new SmtpClient("mysmtphost"); 
     Mailman.EnableSsl = true; 
     Mailman.Port = 465; 
     Mailman.DeliveryMethod = SmtpDeliveryMethod.Network; 
     Mailman.Credentials = new System.Net.NetworkCredential("usernamehere", "passwordhere"); 
     Mailman.Send(Enveloppe); 

Nun ist es so, dass es entweder sagt mir, dass meine Operation timed out, oder dass „Ein Verbindungsversuch ist fehlgeschlagen, da die verbundene Partei nicht richtig nach einer Zeitspanne reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host hat hat nicht geantwortet ".

Ich bin ratlos, ich sehe nicht, welche einen Teil davon ich falsch

aktualisieren tue: Ich kann nicht auf den Server von Telnet zu verbinden scheinen, am besten, die ich mit meinem Laptop verbinden (unter ubuntu), aber ich bekomme nie die "200" Antwort. Unter der Windows-Workstation bekomme ich ein ständig leeres Telnet-Fenster.

Ich kann E-Mail auf dem angegebenen Server mit Thunderbird ohne jedes Problem senden/empfangen.

Antwort

1

schließlich die Täter gefunden - irgendwie die Verbindung gelassen wurde zwischen dem „vermeintlich richtigen“ SMTP-Server des Hosting-Unternehmen mir gab hängen, und der eigentliche SMTP-Server. Ich änderte gerade die Adresse von mail.domain.com zu smtp.hostingdomain.com und es reparierte alles.

Dies ist nur einer dieser "Was zur Hölle" Momente, die ich hasse. Aus diesem Grund musste ich die Funktion des anwendungsbasierten Mail-Versands einstellen, aber letztendlich entschieden mein Chef und ich, dass wir die Dateien stattdessen irgendwo hosten und die Links in die E-Mail einfügen würden, anstatt angehängte Dateien anzuhängen zur Post.

Also, das beantwortet nicht wirklich die Frage, aber für diejenigen, die die Lösung in Betracht ziehen, aber Sie könnten die Dateien, die Sie senden möchten, an einen von außen zugänglichen Ort stellen und stattdessen eine Verknüpfung einfügen. Dort.

0

Ist dieser SMTP-Server auf IBM 465 aktiv und unterstützt SSL?

+0

Ich versuchte zwei oder drei Dinge, wenn ein erster Server nicht reagierte. Ich habe versucht, die Verwendung meiner persönlichen Website SMTP-Server mit SSL, daher die SSL-Teil im Code. Es ist mir nicht gelungen, die Operation abgelaufen zu sein, aber da ich in der Lage bin, E-Mails mit dem Server per E-Mail zu senden und zu verschlüsseln, muss ich davon ausgehen, dass alles läuft. –

0

Klingt, als wäre etwas schief gelaufen, als ich versuchte, mit Ihrem SMTP-Server zu kommunizieren (hah, no shit!).

Ich nehme an, Sie sind auf Windows, also gehen Sie zu Start -> Ausführen -> 'Telnet Mysmtphost 465' und sehen Sie die Antwort, die Sie in der Konsole erhalten.

Siehst du so etwas?

+0

Von meinem Ubuntu Laptop bekomme ich das erwartete Ergebnis. Von meiner Workstation im selben Netzwerk (das Ding, das den Code ausführt) bekomme ich ein ewig leeres Telnet-Fenster. –

+0

Oh, ich habe in beiden Fällen nicht den "200 mysmtphost". –

+0

Vermutung: Wenn mein Laptop E-Mails senden/empfangen kann, dann sollte ich überprüfen, dass der Rechner, an dem ich arbeite und der, der das Programm ausführt, keine Firewall-Regel für Port 465 oder 25 hat, richtig? –

0

Versuchen Sie, Tracing für System.Net.Mail zu aktivieren (sieht so aus, als ob Sie SNM verwenden). Zu diesem Zweck sollten Sie Ihrer .config-Datei Folgendes hinzufügen.

<configuration> 
    <system.diagnostics> 
    <trace autoflush="true" /> 

    <sources> 

     <source name="System.Net" > 
     <listeners> 
      <add name="MyTraceFile"/> 
     </listeners> 
     </source> 

     <source name="System.Net.Sockets"> 
     <listeners> 
      <add name="MyTraceFile"/> 
     </listeners> 
     </source> 

    </sources> 


    <sharedListeners> 
     <add 
     name="MyTraceFile" 
     type="System.Diagnostics.TextWriterTraceListener" 
     initializeData="System.Net.trace.log"    /> 
    </sharedListeners> 

    <switches> 
     <add name="System.Net" value="Verbose" /> 
     <add name="System.Net.Sockets" value="Verbose" /> 
    </switches> 

Hoffentlich sollte dies zumindest Ihnen sagen, was passiert.

Ich habe ein paar mehr Infos hier bekomme, was zu erwarten: http://systemnetmail.com/faq/4.10.aspx