Email mit attachment

Hallo Leude,

ich hab mal wieder ein mittleres Problem.

ich versuche ein eMail über die mail() zuverschicken mit Anhang. Das Bild liegt auf dem Server, und soll vor versand an die eMail angefügt werden.

Code:
$boundary = md5(uniqid(time()));
$file = fopen("…/pics/auswertung/".$PHPSESSID.".jpg",„rb“);
$content = fread($file,filesize("…/pics/auswertung/".$PHPSESSID.".jpg"));
fclose($file);
$content = chunk_split(base64_encode($content));

$header = „MIME-Version: 1.0\r\n“;
$header .= „From: [email protected]\nContent-Type:text/html;“;
$header .= „\nContent-Transfer-Encoding:8bit“;
$header .= „\n$message“;
$header .= „\n–$boundary–“;
$header .= „\nContent-type:application/octet-stream;name=’“.$PHPSESSID.".jpg’";
$header .= „\nContent-Transfer-Encoding:base64“;
$header .= „\nContent-Disposition:attachment;filename=’“.$PHPSESSID.".jpg’";
$header .= „\n\n$content“;

mail($to, $subject, ‚‘, $header);

HTML-Text wird alles richtig angezeigt, jedoch wird das Bild als Quelltext unter dem HTML-Text angezeigt und nicht als Anhang zum Öffnen/Speichern.

Wenn ihr ne Idee habt, teilt sie mir bitte mit.

Grüße,
Jens

Hallo Jens
ich weiss nicht genau ob das dein problem löst aber mir ist aufgefallen
das du die boundary falsch gestzt hast" du must eine boundary mit --string
beginnne und mit --string-- beeneden.

es muss zwei geben vor und nach deinem attachment:
$header .= „\n–$boundary“; // einmal vor dem attachment

$header .="\nContent-type:application/octet-stream;name=’".$PHPSESSID.".jpg’";
$header .= „\nContent-Transfer-Encoding:base64“;
$header .="\nContent-Disposition:attachment;filename=’".$PHPSESSID.".jpg’";
$header .= „\n\n$content“;

$header .= „\n–$boundary–“; // einmal nach dem attachment

ich hoffe das hilft dir bei deinem problem weiter.
und dein php script funktioniert darauf hin.
gruss chris

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Tach auch,

seltsam seltsam, ich habe deinen Rat befolgt und vor dem Attachment das

$header .= „\n–$boundary“; gesetz und nach dem Attachment das
$header .= „\n–$boundary–“; gestzt.

die folge ist, dass nun der untere
$boundary (–bfd4463be5d3615c20ccf0a407ff2d3a–)
vor dem HTML-Text steht und der obere
$boundary (–bfd4463be5d3615c20ccf0a407ff2d3a)
unter dem HTML-Text, jedoch der Bildcode wird immer noch ausgegeben.

bin für weitere Vorschläge gern zu haben :smile:

Grüße,
Jens

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo !

Code:
$boundary = md5(uniqid(time()));
$file = fopen("…/pics/auswertung/".$PHPSESSID.".jpg",„rb“);
$content =
fread($file,filesize("…/pics/auswertung/".$PHPSESSID.".jpg"));
fclose($file);
$content = chunk_split(base64_encode($content));

$header = „MIME-Version: 1.0\r\n“;
$header .= „From: [email protected]\nContent-Type:text/html;“;

Sollte das nicht multipart/mixed sein ? Außerdem fehlt da ein boundary="$boundary", also
$header .= „From: [email protected]“;
$header .= „\nContent-Type:multipart/mixed; boundary=“$boundary"";

$header .= „\nContent-Transfer-Encoding:8bit“;

Muss in dem Header soweit ich weiss nicht sein

$header .= „\n$message“;

Das ist der Text für MIME - unfähige Reader, da würde ich eher striptags($message) nehmen. \n davor sollte auch doppelt sein, da Header zu Ende…

$header .= „\n–$boundary–“;

Am Anfang ohne die – am Ende. Außerdem ist erst dein HTML dran:
$header .= „\n–$boundary“;
$header .= „\nContent-Type: text/html“;
$header .= „\nContent-Disposition: inline“;
$header .= „\nContent-Transfer-Excoding: 8bit“;
$header .= „\n\n$message“;

$header .= „\n–$boundary“;

$header .=
„\nContent-type:application/octet-stream;name=’“.$PHPSESSID.".jpg’";
$header .= „\nContent-Transfer-Encoding:base64“;
$header .=
„\nContent-Disposition:attachment;filename=’“.$PHPSESSID.".jpg’";
$header .= „\n\n$content“;

$header .= „\n–$boundary–“;

…oder so ähnlich, schicke dir mal ne Mail mit Anhang mit einem Mailprogramm und schaue dir den Quelltext an…

Alexander

Morgen,

also schon mal garnicht so schlecht! es wir jetzt schon mal ein Anhang angezeigt, jedoch lässt sich das Bild nicht öffnen. Außerdem wird der HTML-Text nicht mehr richtig dargestellt :-/

Code:

$header = „MIME-Version:1.0\r\n“;
$header .= „From:[email protected]\n“;
$header .= „\nContent-Type:multipart/mixed; boundary=“$boundary"";
$header .= „\nContent-Type: text/html“;
$header .= „\nContent-Disposition: inline“;
$header .= „\nContent-Transfer-Excoding: 8bit“;
$header .= „\n–$boundary“;
$header .= „\n\n$message“;
$header .= „\n–$boundary“;
$header .= „\nContent-type:application/octet-stream;name=“.$PHPSESSID.".jpg";
$header .= „\nContent-Transfer-Encoding:base64“;
$header .= „\nContent-Disposition:attachment;filename=“.$PHPSESSID.".jpg";
$header .= „\n\n$content“;
$header .= „\n–$boundary–“;

würde mich freuen, wenn ihr mir auf den letzten Metern nochmal helft.

Grüße,
Jens

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Update von ‚Re^3: email mit attachment‘
Anhang sichtbar, jedoch wird der HTML-Code garnicht mehr ausgeführt. Bild lässt sich nicht öffnen.

Code:

$header = „MIME-Version:1.0\r\n“;
$header .= „From:[email protected]\n“;
$header .= „\nContent-Type:multipart/mixed; boundary=“$boundary"";
$header .= „\nContent-Disposition: inline“;
$header .= „\nContent-Transfer-Excoding: 8bit“;
$header .= „\n–$boundary“;
$header .= „\n\n$message“;
$header .= „\n–$boundary“;
$header .= „\nContent-type:application/octet-stream;name=“.$PHPSESSID.".jpg";
$header .= „\nContent-Transfer-Encoding:base64“;
$header .= „\nContent-Disposition:attachment;filename=“.$PHPSESSID.".jpg";
$header .= „\n\n$content“;
$header .= „\n–$boundary–“;

Grüße,
Jens

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]