Het mooiste is natuurlijk om de mime part als quoted-printable te versturen. Php heeft wel een functie om quoted-printable te decoden maar niet om te encoden.
Hier een stukje source van php.net voor een implementatie van het encoderen naar quoted-printable:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| function qp_enc( $input = "", $line_max = 76, $space_conv = false ) {
$hex = array('0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F');
$lines = preg_split("/(?:\r\n|\r|\n)/", $input);
$eol = "\r\n";
$escape = "=";
$output = "";
while( list(, $line) = each($lines) ) {
//$line = rtrim($line); // remove trailing white
space -> no =20\r\n necessary
$linlen = strlen($line);
$newline = "";
for($i = 0; $i < $linlen; $i++) {
$c = substr( $line, $i, 1 );
$dec = ord( $c );
if ( ( $i == 0 ) && ( $dec == 46 ) ) { //
convert first point in the line into =2E
$c = "=2E";
}
if ( $dec == 32 ) {
if ( $i == ( $linlen - 1 ) ) { // convert
space at eol only
$c = "=20";
} else if ( $space_conv ) {
$c = "=20";
}
} elseif ( ($dec == 61) || ($dec < 32 ) ||
($dec > 126) ) { // always encode "\t", which is *not* required
$h2 = floor($dec/16);
$h1 = floor($dec%16);
$c = $escape.$hex["$h2"].$hex["$h1"];
}
if ( (strlen($newline) + strlen($c)) >=
$line_max ) { // CRLF is not counted
$output .= $newline.$escape.$eol; //
soft line break; " =\r\n" is okay
$newline = "";
// check if newline first character will
be point or not
if ( $dec == 46 ) {
$c = "=2E";
}
}
$newline .= $c;
} // end of for
$output .= $newline.$eol;
} // end of while
return trim($output);
} |
Nog iets, je geeft aan dat je een multipart/mixed mailtje gaat versturen, maar je stuurt een gewone text/html mail.
Om een plain text versie van je mail toe te voegen kun je multipart/alternative gebruiken (en je boundary gebruiken om de grenzen aan te geven).
En dan nog als laatste: je werkt met een boundary. En een boundary hoort te worden geclosed met je boundary value en een '--' erachter.
De meeste mailclients pakken dit soort mailtjes wel, maar sommige gaan hopeloos de fout in. Bekijk anders ff de rfc van mime:
http://www.faqs.org/rfcs/rfc2045.html
[
Voor 19% gewijzigd door
CodeIT op 28-04-2004 00:36
]