SOS ! mail mit pdf - klappt ,aber nur fast
sunshine
- php
Ich habe mit FPDF ein pdf-file auf dem Server gebastelt : Test.pdf.
Als nächstes versuche ich das Ding via email als attachment zu ver senden.
Das pdf ist ok, kann von IE6 und opera auf dem Server prima dargestellt werden Wird auch nach Binär-Übertragung im FTP auf Windows klasse dargestellt.
NUR _ egal welche MIME-types ich auch durchprobiere (incl. application/pdf) meldet acrobat 5 nach E-mail-Übertragung einen Dateilesefehler.
Das Pdf kommt für A5 unlesbar, als unerwünscht Zugabe liefert er auch noch eine leere, nirgends angeforderte txt-Datei mit, die sich allerdings prima öffnen läßt.
Ich bin für jede Anregung dankbar: PHP=-code: s.u.
Grüße
Sunshine
// $fileatt = ""; // Path to the file
$fileatt_type = "application/octet-stream"; // File Type
// $fileatt_name = ""; // Filename that will be used for the file as the attachment
$email_from = "A@B.de"; // Who the email is from
$email_subject = "xxx"; // The Subject of the email
$email_message = "xxx" ; // Message that the email has in it
$email_to = $email; // Who the email is too
$headers = "From: ".$email_from;
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary="{$mime_boundary}"";
$email_message .= "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type:text/html; charset="iso-8859-1"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$email_message . "\n\n";
/********************************************** First File ********************************************/
$fileatt = ""; // Path to the file
$fileatt_type = "application/octett-stream"; // File Type
$fileatt_name = "Test.pdf"; // Filename that will be used for the file as the attachment
$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);
$data = chunk_split(base64_encode($data));
$email_message .= "--{$mime_boundary}\n" .
"Content-Type: {$fileatt_type};\n" .
" name="{$fileatt_name}"\n" .
"Content-Disposition: attachment;\n" .
" filename="{$fileatt_name}"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" .
"--{$mime_boundary}\n";
unset($data);
unset($file);
unset($fileatt);
unset($fileatt_type);
unset($fileatt_name);
$ok = @mail($email_to, $email_subject, $email_message, $headers);
if($ok) {
echo "<font face=verdana size=2>The file was successfully sent!</font>";
} else {
die("Sorry but the email could not be sent. Please go back and try again!");
}
Hello,
$data = chunk_split(base64_encode($data));
versuch bitte mal, was passiert, wenn Du bei chunk_split nicht die Standardwerte nimmst, sondern
$data = chunk_split(base64_encode($data),76,"\n"); ## Standard ist "\r\n"
Das hat bei mir bisher immer geholfen.
Aus irgendeiner RFC hatte ich makl rausgepult, dass bas64 nur mit chr(10) begrenzt werden darf.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Danke für den Tipp - aber sorry - keinerlei Veränderung.
Das PDF ist sauber -solange es der mail nicht in die Finger fällt.
Grüsse
sunshine
Hello,
Das PDF ist sauber -solange es der mail nicht in die Finger fällt.
schick mir bitte mal eine solche Mail, aber bitte nicht so groß ;-)
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hi,
sollte unterwegs sein.
application ist jetzt pdf - aber das ändert eh alles nix.
Danke fürs Einmischen.
sunshine
Hello,
Hi,
sollte unterwegs sein.application ist jetzt pdf - aber das ändert eh alles nix.
ist gar kein Attachment daran.
Das PDF hat angeblich 3 Byte Größe. Das schafft man nicht ;-))
Da muss also etwas beim Zusammenstellen verloren gehen.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Habe eine Mail an mich (Outlook) weitergeleitet und hoffe, daß er die beiden Attachments auch brav ausliefert.
Danke.
sunshine
Hello,
Habe eine Mail an mich (Outlook) weitergeleitet und hoffe, daß er die beiden Attachments auch brav ausliefert.
Ist wieder nur ein PDF-Attachment ohne Inhalt daran
------=_NextPart_001_0011_01C77F74.B3C34040--
------=_NextPart_000_0010_01C77F74.B3BB9F20
Content-Type: application/pdf;
name="Test.pdf"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="Test.pdf"
------=_NextPart_000_0010_01C77F74.B3BB9F20
Content-Type: text/plain;
name="ATT00014.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="ATT00014.txt"
------=_NextPart_000_0010_01C77F74.B3BB9F20--
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo
Test.pdf bekomme ich als pdf- Attachment mit Lesefehler angezeigt.
filename="ATT00014.txt" zeigt ermir als leeren, unbestelltes text-Attachment an.
Muß wohl wirklich irgendwie mit dem Einlesen zu tun haben, was aber filename="ATT00014.txt" nicht erklärt.
Habe das PDF (einfach nur Hello World), so wie es nach FTP-Binärübertragung bei mir auf dem PC auftaucht - nämlich lesbar mal wietergeleitet.
Viele Grüsse und vielen Dank
sunshine
Hello,
Test.pdf bekomme ich als pdf- Attachment mit Lesefehler angezeigt.
filename="ATT00014.txt" zeigt ermir als leeren, unbestelltes text-Attachment an.Muß wohl wirklich irgendwie mit dem Einlesen zu tun haben, was aber filename="ATT00014.txt" nicht erklärt.
Nö, der Fehler steckt in Deinem Script.
Repariere es, wie in https://forum.selfhtml.org/?t=150529&m=978415
schon erläutert.
Dann klappts auch mit dem Attachment-Versand
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
OH Je !!!!
Kaum macht man es richtig, schon gehts.
Die beiden Bindestriche haben mir das unerwünschte Textfile abgeschafft.
Der Hinweis mit dem leeren PDF war auch ein Volltreffer - schließlich war das einzulesende File mit "" angegeben !!!!
Herzlichen Dank, du bist echt ein Engel !
Liebe Grüße in den Harz
Sunshine
Hello,
Herzlichen Dank, du bist echt ein Engel !
Hoffentlich nicht so bald. Es war schon wieder kurz davor :-(
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hi
Herzlichen Dank, du bist echt ein Engel !
Hoffentlich nicht so bald. Es war schon wieder kurz davor :-(
--Na ja - villeicht solltest du wegen ein paar dusseliger Fragen nicht jedesmal gleich kopfüber aus dem Fenster springen ...
Herzlichen Dank noch mal
sunhine
Hello,
Kaum macht man es richtig, schon gehts.
Siehe Zitatesammlung
Um es auch für Gäste lesbar zu machen...
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hello,
/********************************************** First File ********************************************/
$fileatt = ""; // Path to the file
$fileatt_type = "application/octett-stream"; // File Type
$fileatt_name = "Test.pdf"; // Filename that will be used for the file as the attachment$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
echo "<p>Dateigroesse: ".strlen($data)."</p>\n"; ### zur Kontrolle
fclose($file);
$data = chunk_split(base64_encode($data));
echo "<pre>\n";
echo $data; ### Zur Kontrolle
echo "</pre>\n";
$email_message .= "--{$mime_boundary}\n" .
"Content-Type: {$fileatt_type};\n" .
" name="{$fileatt_name}"\n" .
"Content-Disposition: attachment;\n" .
" filename="{$fileatt_name}"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" .
"--{$mime_boundary}\n";
Bau mal bitte die Kontrollen ein.
Außerdem sind die vorgeschriebenen Zeilenumbrüche für Mail-Header "CrLf" also 0D 0A
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hi!
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary="{$mime_boundary}"";
Die Header müssen laut dem SMTP-RFC mit \r\n abgetrennt werden und nicht nur mit einem \n.
Die meisten MTA sind zwar so eingestellt, daß es mit einem \n auch funktioniert, aber es ist dennoch falsch.
$fileatt_type = "application/octet-stream";
$fileatt_type = "application/octett-stream";
Du solltest dich für eine Schreibweise entscheiden. Ich würde die erste nehmen, da die zweite falsch geschrieben ist. ;-)
Der korrekte Mime-Type für eine PDF-Datei ist application/pdf.
In deiner zweiten Version sehe ich überhaupt keine Header. Der Content-Type wird da nur in $email_message angeführt. Diese Mail wird dann sicherlich als text/plain verschickt. Oder hast du dort nur vergessen, den entsprechenden Codeabschnitt zu posten?
Schöner Gruß,
rob
Hello,
$email_message .= "--{$mime_boundary}\n" .
"Content-Type: {$fileatt_type};\n" .
" name="{$fileatt_name}"\n" .
"Content-Disposition: attachment;\n" .
" filename="{$fileatt_name}"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" .
"--{$mime_boundary}\n";
Nun schau Dir das mal an.
Fehlt da nicht was?
Das Attachment ist niemals zuende!
"--{$mime_boundary}--\n";
wäre wohl besser
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hello,
$email_message .= "--{$mime_boundary}\n" .
"Content-Type: {$fileatt_type};\n" .
" name="{$fileatt_name}"\n" .
"Content-Disposition: attachment;\n" .
" filename="{$fileatt_name}"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" .
"--{$mime_boundary}\n";Nun schau Dir das mal an.
Fehlt da nicht was?
Das Attachment ist niemals zuende!"--{$mime_boundary}--\n";
wäre wohl besser
Jow,
was zwei Bindestriche alls ausmachen, scnr, roro