Announcement

Collapse
No announcement yet.

Email per SMTP verschicken, an einem Rechner geht's, am anderen nicht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Email per SMTP verschicken, an einem Rechner geht's, am anderen nicht

    Hallo zusammen,

    habe das Problem, dass ich mit folgendem Code an meinem Rechner im Homeoffice tadellos über ein bestimmtes Konto bei Strato Emails verschicken kann, am Rechner in der Arbeit bekomme ich aber die Fehlermeldung "Fehler beim senden von Mail. "
    Code:
            public void SendEmail(string fromAddress, string toAddress, string subject, string body)
            {
                try
                {
                    using (MailMessage mail = new MailMessage())
                    {
                        mail.From = new MailAddress(fromAddress);
                        mail.To.Add(toAddress);
                        mail.Subject = subject;
                        mail.Body = body;
                        mail.IsBodyHtml = true;
    
                        using (System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.strato.de", 587))
                        {
                            smtp.Credentials = new NetworkCredential("username", "password");
                            smtp.EnableSsl = true; 
                            smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                            smtp.UseDefaultCredentials = false;
                            smtp.Send(mail);
                        }
                    }
                } catch (System.Exception e)
                {
                    MessageBox.Show(e.Message, e.Source);
                }
            }
    Was ich schon versucht habe:
    - Am Arbeitsrechner habe ich in Outlook die Emailadresse eingerichtet, da funktionert es tadellos.
    - Virenscanner ausschalten
    - Firewall ausschalten
    - gecheckt, ob TLS 1.2 im Windows aktiviert ist

    Hat jemand noch eine Idee, wo der Fehler stecken könnte?

    Danke!

    System.Net.Mail.SmtpException
    HResult=0x80131500
    Nachricht = Fehler beim Senden von Mail.
    Quelle = System

    Diese Ausnahme wurde ursprünglich von dieser Aufrufliste ausgelöst:
    [Externer Code]

    Innere Ausnahme 1:
    WebException: Die Verbindung mit dem Remoteserver kann nicht hergestellt werden.

    Innere Ausnahme 2:
    SocketException: Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat 81.169.145.133:587


  • #2
    Danach
    https://www.google.com/url?sa=t&rct=...UkImxi1mjjRXxQ
    benötigt STRATO Port 995
    Christian

    Comment


    • #3
      Du meinst sicher Port 465 für SMTP, 995 wäre ja POP3. Das hat mich schon Google-Power gekostet. Auf port 465 kann ich mit keinem der beiden Rechner Mails an Strato übergeben. Bis ich eine Seite gefunden habe auf der Port 587 für Strato angegeben war. Damit geht's auch am Homeofficerechner.

      Mit port 465 bekomme ich an beiden Rechnern den Fehler IOException: Von der Übertragungsverbindung können keine Daten gelesen werden: net_io_connectionclosed.

      Der Arbeitsrechner geht mit keinem der Ports.

      Comment


      • #4
        Ja, 465.
        "Bis ich eine Seite gefunden habe auf der Port 587 für Strato angegeben war."
        Verstehe ich nicht.
        Bloß weil irgend eine Seite 587 angibt soll das dann stimmen?
        Strato selbst :https://www.strato.de/faq/mail/exter...dresse-nutzen/

        Und das die Verbindung nicht aufgebaut wird heißt ja eben genau, das Name oder Port nicht stimmt
        Christian

        Comment


        • #5
          Die Info hatte ich schon bei Strato gefunden, habe grad die Seite nicht mehr zur Hand, aber: "Sofern sie Schwierigkeiten mit dem Port 465 haben, bietet STRATO den alternativen Port 587 (nach RFC 2476)."

          Nunja, ich habe Schwierigkeiten mit dem Port 465 und an einem Rechner geht's mit Port 465 nicht, mit 587 schon. Am anderen Rechner gehts mit keinem der beiden Ports. Das ist zwar seltsam, aber entspricht gerade meiner Realität ;-)

          Comment


          • #6
            Wie definierst du deinen Homeoffice-Rechner?
            Bist du per Citrix, Sinix u.a. über den Rechner in deinem Firmennetzwerk und alle Aktionen sind quasi "in der Firma" oder arbeitest du von Zuhause aus deinem eigenen Heimatnetzwerk mit deinem eigenen Internetzugang?

            Wenn es nur aus dem Firmennetzwerk nicht geht, mal die Netzwerker befragen, ob überhaupt irgendein SMTP-Port freigeschaltet ist
            Christian

            Comment


            • #7
              Das wichtige in der Doku für dich ist vermutlich folgendes "We don't recommend that you use the SmtpClient class for new development because SmtpClient doesn't support many modern protocols. Use MailKit or other libraries instead. For more information, see SmtpClient shouldn't be used on GitHub."
              Das steht ansonsten auch das der irgendwo zwischen nicht empfehlenswert und obsolet einzuordnen ist.

              Bist du dir sicher das du von einem Rechner 587 zum laufen bekommen hast? Laut Doku kann Strato an diesem Port nur relayen also von SMTP zu SMTP weiterleiten aber ist nicht zum einliefern gedacht.
              Port 465 (SMTP/SSL) wird auf jeden Fall nicht funktionieren der SmtpClient kann nur STARTTLS (das was üblicherweise auf 587 läuft) und das unterstützt Strato laut deren Aussage nicht zum einliefern von Mails.

              Empfehlung daher Client wechseln und wieder auf Port 465 wechseln.

              Comment


              • #8
                Ah, dass man die SmtpClient Klasse nicht mehr verwenden sollte, war mir nicht bekannt. Habe MailKit getestet und siehe da, damit klappt's jetzt auch in der Firma.

                Herzlichen Dank für den Hinweis!

                Der Vollständigkeit halber hier noch der Beispielcode mit dem ich MailKit gerade erfolgreich getestet habe:
                Code:
                        public void Email(string fromAdress, string toAddress, string subject, string body) // MailKit
                        {
                            try
                            {
                                MimeMessage message = new MimeMessage();
                                message.From.Add(new MailboxAddress("Sender", fromAdress));
                                message.To.Add(new MailboxAddress("Recipient", toAddress));
                                message.Subject = subject;
                                message.Body = new TextPart("html") { Text = body };
                
                                using (MailKit.Net.Smtp.SmtpClient client = new MailKit.Net.Smtp.SmtpClient())
                                {
                                    client.Connect("smtp.strato.de", 465, MailKit.Security.SecureSocketOptions.Auto);
                                    client.Authenticate("username", "password");
                                    client.Send(message);
                                    client.Disconnect(true);
                                }
                            } catch(System.Exception e) { MessageBox.Show(e.Message, e.Source);  }
                        }

                Comment

                Working...
                X