none
Problem beim pdf-Versand per Mail

    Frage

  • Hallo zusammen

    Ich habe ein seltsames Problem beim Versand von einzelnen pdf's über System.Net.Mail.SmtpClient

    Auf dem Produktiv-Server kann ein bestimmtes pdf(aktuell gibt es zwei solches Problem-pdf's) nicht versendet werden(Exception steht unten). Wenn ich das gleiche pdf von meinem lokalen PC aus(auch über unsere Web-Anwendung welche das pdf versendet) versuche, funktioiert es. Habe aus dem Original-pdf mit freepdf ein neues pdf erzeugt(ist rund 7kB grösser) und damit geht es auch auf dem Server. Die pdf's sind rund 80kB gross, daran kann es also nicht liegen.

    Ist das ein Problem in der SMTP-Komponente im .NET? Ist das jemandem bekannt oder gibt es eine Lösung?

    Gruss Christoph

      System.Net.Mail.SmtpException: Failure sending mail.
      ---> System.IO.IOException: Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time,
     or established connection failed because connected host has failed to respond.
     ---> System.Net.Sockets.SocketException:
     A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
     at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)   
     --- End of inner exception stack trace ---     
     at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)     
     at System.Net.DelegatedStream.Read(Byte[] buffer, Int32 offset, Int32 count)  
     at System.Net.BufferedReadStream.Read(Byte[] buffer, Int32 offset, Int32 count)     
     at System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine)
     at System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader caller)     
     at System.Net.Mail.DataStopCommand.Send(SmtpConnection conn)   
     at System.Net.Mail.SmtpClient.Send(MailMessage message)     --- End of inner exception stack trace ---     
     at System.Net.Mail.SmtpClient.Send(MailMessage message)  
     at myfactory.Sys.Email.EmailClient.mbSend(ClientInfo oClientInfo, String sDiskDirectory) in

    Donnerstag, 17. Januar 2013 10:12

Alle Antworten

  • Hi,

    am ehesten würde mir hier ein Spam-/Virenfilter beim empfangenden Mailserver einfallen. Wenn dort eine Liveprüfung der gesendeten Daten stattfindet, wird oftmals der Empfang bei positivem Befund direkt abgebrochen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 17. Januar 2013 13:20
  • Hallo Stefan

    Bei mir lokal kann ich das pdf aber an meine Mailadresse senden, ab dem Server geht es nicht. Das neu generierte pdf geht aber auch ab dem Server.

    Gruss Christoph

    Donnerstag, 17. Januar 2013 13:22
  • Hallo Christoph,

    dennoch könnte es daran liegen.

    Wie versendet ihr denn die Email? Direkt über den IIS SMPT? Direkt an den Empfängermailserver? Indirekt über einen Smarthost?

    Kannst Du mir zwei PDF Dateien (einmal den Problembär und einmal die funktionierende Variante davon) per Email senden? (sinnvollerweise in eine .zip oder .rar Datei packen). Emailadresse findest Du auf meiner u.a. Website.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 17. Januar 2013 14:44
  • Hallo Stefan

    Geht per SMTP an einen Mailserver (vom Hoster) und von da dann weiter.

    Besten Dank fürs Angebot mit dem Mail. Werde ich gleich zustellen.

    Gruss Christoph

    Freitag, 18. Januar 2013 22:14
  • Hallo Christoph,

    also ich konnte beide Dateien problemlos über drei verschiedene SMTP Server abliefern.

    Kannst Du mal testweise einen anderen SMTP Server für den Versand per Skripte von deiner Seite her angeben? Wenn das nicht klappt, benenn die Datei einfach mal von .pdf in .txt um. Falls es ein Virenscanner/Spamfilter ist, wird der dann evtl. nicht mehr meckern. Das ist zwar dann noch nicht die Lösung aber man hätte zumindest die Ursache gefunden.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 19. Januar 2013 21:06
  • Hallo Stefan

    Von meinem lokalen PC konnte ich die Dateien auch versenden(auch aus unserer Anwendung heraus über .NET-SMTP). Nur auf dem Server geht es nicht mehr(bis vor ca einem Monat gabs keine Rückmeldungen, dass es nicht gehe).

    Habe die pdf-Datei nach gif umbenannt, damit geht es. Habe für den Versand einen weitere(mein privat SMTP-Hoster) genutzt und auch damit geht es nicht.

    Wenn ich das pdf öffne und direkt wieder speichere, ist das pdf rund 2kB grösser und kann dann versendet werden.

    Gruss Christoph

    Freitag, 25. Januar 2013 13:06
  • Hallo Christoph,

    dann frag doch mal einen der Mailserverbetreiber, ob Sie dir das Log dazu bereitstellen oder zumindest den Ablehnungsgrund nennen können.

    Ich bin immer noch der Meinung, dass es ein Spam- oder Virenfilter ist, der ggfs. einen False Positive erzeugt.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 25. Januar 2013 15:20
  • Hallo Stefan

    Das sind schon mindestens 3 unterschiedliche Mailprovider.Einer hatte sich das angeschaut und nichts auffälliges festgestellt.

    Habe jetzt bei mir lokal Mailenable installiert und auch wenn ich da hin sende, gibt es die gleiche Meldung.

    Habe lokal Wireshark gestartet und da kann ich sehen, dass bei diesem Beispielsdokument DATA-Packete gesendet werden und plötzlich geht nichts mehr.Ohne diesen Anhang gibt es nach den SMTP-DATA-Packete einen IMF-Eintrag mit from, subject etc.

    Es muss also während der Übertragung des Dokumentes ein Problem mit der Verbindung auftreten und weil es nur ab diesem einen Server(lokal geht es) ist, frage ich mich, ob evt. ein Microsoft-Patch dafür verantwortlich ist. Anfangs Jahr wurden da die neusten eingespielt. Wir haben jetzt div. Meldungen und das wäre früher aufgefallen, wenn da da auch schon so gewesen wäre.

    Gruss Christoph

    Freitag, 25. Januar 2013 15:49
  • Hallo

    Bei einem anderen(neuen) Kunden gibt es jetzt ein ähnliches Problem. Bei diesem Kunden geht der Mailversand gar nicht(auch nicht nur mit Betreff und kurzem Text).

    Auf dem Server konnte ich mit telnet über den Mailserver vom Kunden(Exchange) ein Testmail versenden. Ebenfalls kann ich das Mail versenden, wenn ich es aus der lokalen Umgebung versende, auf dem Server ab .NET/IIS gehts da aber gar nie.

    Die Meldung lautet:

    System.Net.Mail.SmtpException: Failure sending mail.
    ---> System.IO.IOException: Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
    ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond    
     at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)     
     --- End of inner exception stack trace ---   
       at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)  
          at System.Net.DelegatedStream.Read(Byte[] buffer, Int32 offset, Int32 count)   
            at System.Net.BufferedReadStream.Read(Byte[] buffer, Int32 offset, Int32 count)  
               at System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine)  
                  at System.Net.Mail.AuthCommand.Send(SmtpConnection conn, String message)  
                     at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint)  
                        at System.Net.Mail.SmtpClient.Send(MailMessage message)   
                          --- End of inner exception stack trace ---  
                             at System.Net.Mail.SmtpClient.Send(MailMessage message)   
                              

    Über einen SMTP von meinem Provider ging das Mail auch auf dem Server raus.

    Wenn eine Meldung von wegen User nicht erlaubt,... kommen würde, würde es ja noch gehen, aber einfach so mit Remote nicht mehr meldet!!?

    Gruss Christoph


    • Bearbeitet chmav Freitag, 25. Januar 2013 21:43
    Freitag, 25. Januar 2013 21:32
  • Hallo

    Habe jetzt per wireshark das SMTP-Prokolll aufgezeichnet:

    So sieht es aus, bevor es zum Abbruch kommt.

    Beim Mail mit dem erneut abgespeicherten pdf welches erfolgreich versendet werden kann, gibt es auch TCP Dump ACK-Meldungen, danach können aber die weiteren Teile erfolgreich weiter gesendet werden.

    Vieleicht damit einen Tipp?

    Gruss Christoph

    Montag, 28. Januar 2013 21:04
  • Wegen dem Problem, dass der Mailversand(alle Mails ab dem Webserver) über einen Kundenmailserver nicht geht, habe ich jetzt ein Mini-Konsoleprogramm geschrieben. Wenn ich es am lokalen PC und auf einem anderen Win-Server starte, wird das Mail versende(nur Betreff und kleiner Text, keine Anhänge). Wenn es auf dem Produktivserver ist, wird es nicht versendet. Ändere ich den Mailserver, dann wird das Mail auch auf dem Produktivserver versendet.

    Ist da evt. ein Problem mit Exchange-Servern und NTLM bekannt?

    Gibt es beim SMTPClient Einstellungen, welche vom Windows gelesen werden und daher unterschiedlich sein könnten?

    Gruss Christoph

    Dienstag, 29. Januar 2013 13:37