PDF auf Server erzeugen und an Mail (Outlook) anhängen
Murmelin
- projektverwaltung
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
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.
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
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.
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
Mahlzeit Murmelin,
Könnte man Outlook überreden, eine Datei anzuhängen, die im Internet steht?
Was Felix sagen will: Nein.
MfG,
EKKi
Hallo,
schicke die Mails vom Server doch an Deinen Auftraggeber.
Dann hat der die auch im RausGuck-Postfach.
Gruss Ulli
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
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.
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
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
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
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
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.
Liebes Murmelin,
[...] Da kann doch wohl nur die Funktion SendMail Mist machen?
Woher hast Du diese Funktion?
Liebe Grüße,
Felix Riesterer.
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
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
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
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:
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
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&body=Ihr Antrag&attachment=http://www.kreis-gross-gerau.de/service/downloads/download/Antrag_Baustellen_neu.pdf">Mail versenden</a>
Liebe Grüße,
Felix Riesterer.
Lieber Felix,
geht denn auch sowas hier?
<a href="mailto:name@example.com?subject=Ihr Antrag&body=Ihr Antrag&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 &attachment=? Geraten?
Gruß, Murmelin
Liebes Murmelin,
Wie kommst du auf &attachment=? Geraten?
ja.
Liebe Grüße,
Felix Riesterer.
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?
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