none
PDF Dateianhang als Email RRS feed

  • Frage

  • Hallo Leute,
    im untenstehenden Code erzeuge ich einen ReportPDFStream, der ein PDF-File enthält.
    Im Teil 1 schreibe ich testweise den PDF-Stream auf eine Festplatte. Dieses erzeugte "test.pdf" wird auch einwandfrei vom Acrobat-Reader angezeigt.

    Im Teil 2 wird der gleiche ReportPDFStream als Attachment als Email versandt. Wenn ich diesen Mailanhang mit dem Acrobat-Reader öffne, bekomme ich die Fehlermeldung: "Adobe Acrobat Reader konnte test.pdf nicht öffnen, da der Dateityp nicht unterstützt wird oder die Datei beschädigt ist..."

                Dim buffer(1024) As Byte
                Dim ReportPDFStream = Report.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat)
    
                'Teil 1 eine pdf-File auf der Festplatte erzeugen (funktioniert)
                Using output = New System.IO.FileStream(My.Application.Info.DirectoryPath & "\test.pdf", IO.FileMode.Create)
                    Dim readbytes As Integer
    
                    While True
                        readbytes = ReportPDFStream.Read(buffer, 0, buffer.Length)
                        If readbytes = 0 Then Exit While
    
                        output.Write(buffer, 0, readbytes)
                    End While
    
                End Using
    
                'Teil 2: ein pdf-File als Dateianhang versenden (pdf kann nicht geöffnet werden)
                Dim Attachment = New System.Net.Mail.Attachment(ReportPDFStream, "test.pdf", System.Net.Mime.MediaTypeNames.Application.Octet)
    
                Dim Mail As New System.Net.Mail.MailMessage
    
                With Mail
                    .To.Add(email)
                    .From = New System.Net.Mail.MailAddress("office@irgendwas.at")
                    .Subject = "Anhang senden"
                    .Body = "Sehr geehrte..."
                    .Attachments.Add(Attachment)
                End With
    
                Dim smtp As New System.Net.Mail.SmtpClient
                With smtp
                    .Host = "10.0.0.62"
                    .Send(Mail)
                End With

    Wo liegt hier der Fehler?
    Vielen Dank im Voraus


    Christian Tauschek


    Montag, 6. August 2018 13:39

Antworten

  • Hallo Christian,

    zum einen: Warum Application.Octet und nicht Application.Pdf beim Mimetype?

    Zum anderen: Du liest den Stream, setzt diesen aber nicht mehr zurück auf die Startposition 0, daher wird beim nächsten Lesen ab der letzten Stelle gelesen, was dann einen leeren Inhalt zur Folge hat.

    Sollte man aber auch sehen, wenn man die Dateianlage aus der Email mal speichert und und sich den Inhalt mit einem Editor wie Ultraedit, Notepad++, usw. anschaut.

    Setz nach dem Lesen per <Stream>.Read( ... ) mal die Position mittels:

    <Stream>.Position = 0

    zurück.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Montag, 6. August 2018 18:32
    Moderator