PDA

Bekijk Volledige Versie : multipart email met HTML, plain text en embedded jpg [PHP]



Matthijs de Z
18/04/05, 17:05
Hoi,

Ik zit vandaag een beetje te klooien met een bij elkaar geraapt script. Het
script verstuurd wel een email, maar de jpg komt steeds in de bijlage en ik
krijg ook alleen ene plain text mail binnen, terwijl ik HTML kan ontvangen.
Iemand een hint?
Groeten,

Matthijs

<?php

$file = "watbeniklelijkvandichtbij.jpg";
$type = "image/jpg";

$openfile = fopen ($file, "r");

$lees_image = fread ($openfile, filesize($file));
fclose ($openfile);
$encode_image = chunk_split (base64_encode($lees_image));

$htmlinhoud="Tekst met een <b>vet</b> woord<br><img
src=\"cid:watbeniklelijkvandichtbij.jpg\">";
$textinhoud=strip_tags($htmlinhoud);

$body = "--Message-Boundary\n";
$body .= "Content-type: text/html; charset=US-ASCII\n";
$body .= "Content-transfer-encoding: 7BIT\n";
$body .= "Content-description: HTML Mail message body\n\n";
$body .= "$htmlinhoud\n";
$body = "--Message-Boundary\n";
$body .= "Content-type: text/plain; charset=US-ASCII\n";
$body .= "Content-transfer-encoding: 7BIT\n";
$body .= "Content-description: plain text Mail message body\n\n";
$body .= "$textinhoud\n";
$body .= "\n\n--Message-Boundary\n";
$body .= "Content-type: $type; name=\"$file\"\n";
$body .= "Content-Transfer-Encoding: BASE64\n";
//$body .= "Content-disposition: attachment; filename=\"$file\"\n\n";
$body .= "Content-disposition: inline; filename=\"$file\"\n\n";
$body .= "$encode_image\n";
$body .= "--Message-Boundary--\n";

$headers .= "From: mijn emailadres\n";
$headers .= "MIME-version: 1.0\n";
$headers .= "Content-type: multipart/mixed; ";
$headers .= "boundary=\"Message-Boundary\"\n";
$headers .= "Content-transfer-encoding: 7BIT\n";
$headers .= "X-attachments: $file";

mail("een ander emailadres van me", "test mail", $body, $headers);

?>

Daniel Tryba
18/04/05, 18:15
Matthijs de Z <haalallesvoorhetstreepjesplushetstreepjezelfweg-mldz@hotmail.com> wrote:
> Ik zit vandaag een beetje te klooien met een bij elkaar geraapt script. Het
> script verstuurd wel een email, maar de jpg komt steeds in de bijlage

Maar dat lijkt me ook het gewenste effect indien iemand alleen de text
variant wil zien. In de html versie zal het niet werken omdat het
content-id voor het plaatje mist.

> en ik krijg ook alleen ene plain text mail binnen, terwijl ik HTML kan
> ontvangen.

Wellicht omdat je een multipart/mixed ipv multipart/alternative stuurt.

> Iemand een hint?

Gebruik een van de vele classes die daarvoor geschreven zijn...

Alternatief is om rfc 2046 _heel_ goed te lezen (en de andere in de
2045-2049 range).

Matthijs de Z
18/04/05, 18:35
> Maar dat lijkt me ook het gewenste effect indien iemand alleen de text
> variant wil zien.

Daar kan ik later altijd nog een keuze voor zetten in de database. maar dat
komt later wel

>In de html versie zal het niet werken omdat het
> content-id voor het plaatje mist.



> > en ik krijg ook alleen ene plain text mail binnen, terwijl ik HTML kan
> > ontvangen.
>
> Wellicht omdat je een multipart/mixed ipv multipart/alternative stuurt.
>
> > Iemand een hint?

> Gebruik een van de vele classes die daarvoor geschreven zijn...

Ik heb een aantal van die classes bekeken en ze werken vaak met objecten en
controleren veel te veel. Ik wil het gewoon simpel houden. Op die manier kan
ik ook snel zelf wat aanpssingen maken en dergelijke. Het script hoeft toch
niet beveiligd te worden, want ik heb het onder eigen beheer en lokaal
draaien.

> Alternatief is om rfc 2046 _heel_ goed te lezen (en de andere in de
> 2045-2049 range).

deze neem ik aan: http://www.faqs.org/rfcs/rfc2046.html
Bedankt,

Matthijs

Matthijs de Z
18/04/05, 19:25
Dit moet je even checken:
http://freephp.html.it/articoli/print_articolo.asp?id=150
Werkt prima!

> Maar dat lijkt me ook het gewenste effect indien iemand alleen de text
> variant wil zien. In de html versie zal het niet werken omdat het
> content-id voor het plaatje mist.
>
> > en ik krijg ook alleen ene plain text mail binnen, terwijl ik HTML kan
> > ontvangen.
>
> Wellicht omdat je een multipart/mixed ipv multipart/alternative stuurt.
>
> > Iemand een hint?
>
> Gebruik een van de vele classes die daarvoor geschreven zijn...
>
> Alternatief is om rfc 2046 _heel_ goed te lezen (en de andere in de
> 2045-2049 range).
>