Murmelin: PDF auf Server erzeugen und an Mail (Outlook) anhängen

Hallo,

in einem Projekt werden PDF- Dateien per PHP/TCPDF erzeugt, die als Mailanhang versendet werden sollen. Die TCPDF-Fehlermeldungen von vorgestern sind beseitigt.

Der Auftraggeber möchte den Mailversand gerne mit Outlook machen, um die versendeten PDFs auf seinem Rechner zu dokumentieren.

Eine Mail in Outlook eröffne ich per Link:
mailto:name@example.com?subject=Oktober-Ihre%20Rechnung&body=

Ich habe aber keine Idee, wie ich die PDF- Datei an Outlook übergeben kann, damit sie dort angehängt wird. Sie müsste ja auch bei Klick auf den Link erst erzeugt und vom Server bereitgestellt werden.

Könnte man Outlook überreden, eine Datei anzuhängen, die im Internet steht?

Gruß, Murmelin

  1. Liebe(r) Murmelin,

    Der Auftraggeber möchte

    tja, die Wurzel einigen Übels kommt davon, dass die Auftragnehmer nicht genügend Mut darin investieren, ihre Auftraggeber weiterzubilden und dieses "wollen" mit "Unsinn wollen" übersetzen.

    Andererseits habe ich gut reden, da ich diese Dinge nicht für meinen Lebensunterhalt tun muss.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hallo, Felix,

      tja, die Wurzel einigen Übels kommt davon, dass die Auftragnehmer nicht genügend Mut darin investieren, ihre Auftraggeber weiterzubilden und dieses "wollen" mit "Unsinn wollen" übersetzen.

      Das KnoffHoff der "Einzelfertiger" wächst dadurch, dass sie das zunächst Unmögliche für ihre Kunden möglich machen. Oder es zumindest abprüfen (so wie hier) und ggf. eine andere Lösung anbieten, die den gleichen Zweck erfüllt.

      Ohne Auftraggeber hätte ich z.B. keinen Anlass gehabt, mich mit der Erzeugung von PDF- Dateien zu beschäftigen.

      Gruß, Murmelin

      1. Liebes Murmelin,

        Ohne Auftraggeber hätte ich z.B. keinen Anlass gehabt, mich mit der Erzeugung von PDF- Dateien zu beschäftigen.

        die Erzeugung von PDF-Dateien via Backend ist ja nichts unsinniges. Das automatische Versenden von online gespeicherten Anhängen via Outlook(!) dagegen sehr. Warum genügt da nicht ein simpler Link im Mailtext? Warum muss es ein Attachement sein? Und warum muss es über Outlook sein anstatt eines vernünftigen Webmail-Scripts, welches ein spezielles Mailkonto als Absender benutzt und die versandte Mail darin archiviert? Dafür gäbe es nämlich bereits einige Lösungen.

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Moin!

          Warum genügt da nicht ein simpler Link im Mailtext? Warum muss es ein Attachement sein?

          Es ist nicht gesagt, dass alle Mitarbeiter aller Firmen die ein Mailkonto haben auch einen Zugriff ins WWW haben. Deshalb ist ein Attachement in dem Fall sinnvoll.

          Und warum muss es über Outlook sein anstatt eines vernünftigen Webmail-Scripts, welches ein spezielles Mailkonto als Absender benutzt und die versandte Mail darin archiviert?

          Sehe ich auch so. Genau dafür gibt es den BCC-Header. Das wäre einfach und unschlagbar billig.

          MFFG (Mit freundlich- friedfertigem Grinsen)

          fastix

  2. Mahlzeit Murmelin,

    Könnte man Outlook überreden, eine Datei anzuhängen, die im Internet steht?

    Was Felix sagen will: Nein.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:& n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  3. Hallo,

    schicke die Mails vom Server doch an Deinen Auftraggeber.
    Dann hat der die auch im RausGuck-Postfach.

    Gruss Ulli

    1. Moin,

      schicke die Mails vom Server doch an Deinen Auftraggeber.
      Dann hat der die auch im RausGuck-Postfach.

      Das wäre ne Möglichkeit. Von da kann er sie ja dann direkt an eine gewünschte Adresse weiterleiten. Dazu müsste er nur den Adressaten im Adressbuch haben, oder die Mailadresse abtippen.

      Grüße Marco

      1. Wenn die Mailadresse (vermutlich des Kunden) auf der Serverseite bekannt ist...

        a.) gleich dahin schicken
        oder
        b.) als Antwort_AN in der Mail passend angeben. Sorry, wie der Header ich OutLook heisst weiss ich nicht.

      2. Mahlzeit misterunknown,

        schicke die Mails vom Server doch an Deinen Auftraggeber.
        Dann hat der die auch im RausGuck-Postfach.
        Das wäre ne Möglichkeit. Von da kann er sie ja dann direkt an eine gewünschte Adresse weiterleiten. Dazu müsste er nur den Adressaten im Adressbuch haben, oder die Mailadresse abtippen.

        Wieso sollte er? Man kann die Emails doch auch gleich an den eigentlichen Adressaten schicken und *in Kopie* (CC: oder BCC:) an den Auftraggeber.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:& n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  4. hi,

    Könnte man Outlook überreden, eine Datei anzuhängen, die im Internet steht?

    Nein, nicht Outlock. Das Internet musst Du überreden ;)

    Spaß beiseite, die PDF muss von da verschickt werden, wo sie erstellt wurde. Und das ist auf dem Server, der kennt kein Outlok, dafür kennt er Mailserver.

    Hotti

    1. Hallo,

      habe folgendes gemacht:

      Schritt 1:

      PDF erzeugt und als Datei auf dem Server abgelegt. Kontrolle: PDF-Datei mit FTP auf den PC geholt. Lässt sich öffnen und lesen.

      Schritt 2:

      Die auf dem Server gespeicherte PDF-Datei mit
      file_get_contents( "pdf/".$pdf_filename )
      in den Speicher gelesen und an  diese Mail-Funktion aus dem SELFHTML Archiv übergeben.

      Die Mail kommt bei gmx.de an, aber der Acrobat Reader zeigt nichts an, meint
      Datei beginnt nicht mit "%PDF-"

      Schritt 3:

      gmx überprüft. Eine vorhandene Mail mit PDF-Anhang dorthin weitergeleitet. PDF lässt sich problemlos öffnen und lesen. Also Fehler nicht bei gmx.

      Schritt 4:

      gegoogelt nach
      php email mit pdf anhang verschicken
      und nur Fragen ohne vernünftige Antworten gefunden.

      Ist file_get_contents das richtige Kommando, um eine Datei unverändert in den Speicher zu lesen?

      Ist die genannte Funktion aus dem Archiv geeignet, Mail mit Anhang zu versenden?

      LIebe Grüße, Murmelin

      1. hi,

        Die auf dem Server gespeicherte PDF-Datei mit
        file_get_contents( "pdf/".$pdf_filename )
        in den Speicher gelesen und an  diese Mail-Funktion aus dem SELFHTML Archiv übergeben.

        Wenn die Datei auf dem Server erzeugt wurde, hast Du bestimmt noch das Dateihandle offen. Wenn nicht, erstelle ein neues Handle. Positioniere den Dateizeiger an den Anfang und lese in 24-Byte-Schritten, das ist das kleinste gemeinsame Vielfache von 8*3 und 6*4 für eine Base64 Umwandlung. Im RAM hast Du dann den Base64-String, damit kannst Du problemlos eine MIME-Mail erstellen. Btw., der Content-Type ist nicht application/octet-stream sondern application/pdf, dann klappts auch mit dem Öffnen des Anhangs.

        Hotti

        1. n'Abend Hotti,

          Wenn die Datei auf dem Server erzeugt wurde, hast Du bestimmt noch das Dateihandle offen. Wenn nicht, erstelle ein neues Handle. Positioniere den Dateizeiger an den Anfang und lese in 24-Byte-Schritten, das ist das kleinste gemeinsame Vielfache von 8*3 und 6*4 für eine Base64 Umwandlung. Im RAM hast Du dann den Base64-String, damit kannst Du problemlos eine MIME-Mail erstellen. Btw., der Content-Type ist nicht application/octet-stream sondern application/pdf, dann klappts auch mit dem Öffnen des Anhangs.

          Habe in application/pdf geändert und in 24er Schritten gelesen:

              // PDF in den Speicher lesen  
              $handle    = fopen( "pdf/".$pdf_filename, "rb" );  
          //  $contents  = fread($handle, filesize( "pdf/".$pdf_filename ));  
              $contents  = '';  
              while (!feof($handle))  
              {  
                $contents .= fread($handle, 24);  
              }  
              fclose($handle);  
          echo $contents;  
              $mail_status =  
              SendMail (  
               $ToReceiver  
              ,$FromSender  
              ,$Subject  
              ,$MsgText  
              ,$contents  
              ,$pdf_filename  
              );  
          
          

          Die echo- Ausgabe beginnt mit %PDF-1.7 % und endet mit %%EOF und Adobe Reader behauptet weiterhin, die Datei würde nicht mit %PDF- anfangen.

          Da kann doch wohl nur die Funktion SendMail Mist machen?

          Gruß, Murmelin.

          1. Liebes Murmelin,

            [...] Da kann doch wohl nur die Funktion SendMail Mist machen?

            Woher hast Du diese Funktion?

            Liebe Grüße,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
            1. Lieber Felix,

              Woher hast Du diese Funktion?

              Na, aus allererster Hand, dem Forum-Archiv:
              http://forum.de.selfhtml.org/archiv/2005/9/t114451/#m729562

              Hatte ich hier schon verlinkt.

              Gruß, Murmelin

          2. moin,

            Habe in application/pdf geändert und in 24er Schritten gelesen:
                  $contents .= fread($handle, 24);

            Nicht einfach aneinanderhängen, der Sinn des Einlesen in 24-byte-schritten besteht darin, diesen Buffer über die base64-Funktion zu schicken und das Ergebnis zu akkumulieren.

            SendMail (
                 $ToReceiver
                ,$FromSender
                ,$Subject
                ,$MsgText
                ,$contents
                ,$pdf_filename
                );

            Sieht krank aus. Boundary? MIME-Headers? Guck Dir mal an, wie eine Multipart-Message aufgebaut ist. Das kriegst Du auch selbst hin.

            Hotti

      2. Moin!

        Die Mail kommt bei gmx.de an, aber der Acrobat Reader zeigt nichts an, meint
        Datei beginnt nicht mit "%PDF-"

        Wer solchen Fehlermeldungen glaubt verschwendet Zeit, denn die sind oft fehlerhaft.

        Schritt 1 wäre gewesen zu überprüfen, was in der Datei tatsächlich steht. Diese also mit einem geeigneten Editor öffnen. Und zwar vor dem Versenden und natürlich auch nach dem Empfang.

        gegoogelt nach
        php email mit pdf anhang verschicken
        und nur Fragen ohne vernünftige Antworten gefunden.

        Naja. Der Frager der ersten Fundstelle hatte sein Problem doch gelöst ...

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix

  5. Hallo,

    ich stelle gerade fest, dass ich im Mailprogramm Thunderbird sehr wohl einen Anhang versenden kann, der eine URL- Adresse hat, also eine auf dem Server bereitgestellte PDF-Datei.

    Beispiel < 30 KB:

    http://www.kreis-gross-gerau.de/service/downloads/download/Antrag_Baustellen_neu.pdf

    Die schreibe ich in einen mailto als body:

    <a href='mailto:name@example.com?subject=Ihr Antrag&body=http://www.kreis-gross-gerau.de/service/downloads/download/Antrag_Baustellen_neu.pdf'>Mail mit PDF-URL</a>

    Hier als Link ausgeführt:

    Mail mit PDF-URL

    Hmm - geht hier wohl nicht (jedenfalls nicht in der Vorschau)

    Bei mir öffnet Thunderbird ein Sendeformular, die URL steht als Text drin. Die gebe ich in die Zwischenablage, klicke auf "Anhang" und kopiere die in das Feld "Dateiname". PDF- Datei wird geladen und kann als Anhang zur Mail versendet werden.

    Kann das bitte mal jemand mit Outlook nachvollziehen (habe ich nicht)?

    Gruß, Murmelin

    1. Liebes Murmelin,

      <a href='mailto:name@example.com?subject=Ihr Antrag&body=http://www.kreis-gross-gerau.de/service/downloads/download/Antrag_Baustellen_neu.pdf'>Mail mit PDF-URL</a>

      geht denn auch sowas hier?
      <a href="mailto:name@example.com?subject=Ihr Antrag&amp;body=Ihr Antrag&amp;attachment=http://www.kreis-gross-gerau.de/service/downloads/download/Antrag_Baustellen_neu.pdf">Mail versenden</a>

      Liebe Grüße,

      Felix Riesterer.

      --
      ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
      1. Lieber Felix,

        geht denn auch sowas hier?
        <a href="mailto:name@example.com?subject=Ihr Antrag&amp;body=Ihr Antrag&amp;attachment=http://www.kreis-gross-gerau.de/service/downloads/download/Antrag_Baustellen_neu.pdf">Mail versenden</a>

        Nein, bei Thunderbird 7.0.1 leider nicht. Das wäre genial.

        Kann Outlook das? Wie kommst du auf &amp;attachment=? Geraten?

        Gruß, Murmelin

        1. Liebes Murmelin,

          Wie kommst du auf &amp;attachment=? Geraten?

          ja.

          Liebe Grüße,

          Felix Riesterer.

          --
          ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    2. Moin!

      Das ist MURKS.

      Du hast geschrieben:

      Der Auftraggeber möchte den Mailversand gerne mit Outlook machen, um die versendeten PDFs auf seinem Rechner zu dokumentieren.

      Wieso soll oder will der Chef die Nachricht erst auf einem Webserver erzeugen, dann mit Outlook absenden - wenn es doch genügt diese zu erzeugen, somit abzusenden und dann mit Outlook zu empfangen?

      1. Wieso soll die Anzahl der beteiligten Systeme ohne Not erhöht werden? Gerade hinsichtlich der hohen Wahrscheinlichkeit, dass Outlook "mal wieder nicht geht" und erst mal einer kommen muss, der das repariert wäre die rein Webserver-basierte Lösung nicht nur eine Erleichterung sondern auch funktionstüchtiger. Die Mails für das Archiv können nämlich auch später (nach der Outlook- Reperatur) noch vom Mailserver abgeholt werden.

      Kriegst Du es nicht hin, dass eine Mail an den Benutzer und eine an den Chef geht?
      Ich kann das. Aber ich koste ein geringes (ist ja keine große Sache) Entgelt.

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix