|
| Encode / decode Fra : Torben |
Dato : 28-11-05 16:12 |
|
Hej alle
Jeg har bakset en del med at sammensætte en header til afsending fra en
hjemmeside. Sproget er PHP og kommandoen phps mail($toaddress, $subject,
$mailcontent, $headers);
men det kniber at få headeren sammensat rigtigt!
Indtil videre er jeg nået hertil:
$toaddress = $tiladresse;
$subject = $subject." - ".date("d.m.Y",mktime());
$charset = "iso-8859-1"; //
$fra = encode($fra, $charset);
$email = $fraEmail;
$priorities = array( '1 (Highest)', '2 (High)', '3 (Normal)', '4
(Low)', '5 (Lowest)' );
$priority = $priorities[1];
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "X-Priority: 3\n";
$headers .= "X-MSMail-Priority: Normal\n";
$headers .= "X-Mailer: php\n";
$headers .= "From: ".$fra." <".$email.">\n";
$headers .= "BCC: xxx@mail.dk\n";
$sended = mail($toaddress, $subject, $mailcontent, $headers);
Det hele fungerer fint undtagen i de situationer hvor æøå indgår i
FRA-adressen. Functionen encode har jeg brugt for at undgå dette. Den ser ud
på denne måde:
function encode($in_str, $charset) {
$out_str = $in_str;
if ($out_str && $charset) {
$start = "=?" . $charset . "?B?";
$end = "?=";
$spacer = $end . "\r\n " . $start;
$length = 75 - strlen($start) - strlen($end);
$length = floor($length/2) * 2;
$out_str = base64_encode($out_str);
$out_str = chunk_split($out_str, $length, $spacer);
$spacer = preg_quote($spacer);
$out_str = preg_replace("/" . $spacer . "$/", "", $out_str);
$out_str = $start . $out_str . $end;
}
return $out_str;
}
PROBLEMET er at fra-navn og fra-e-mail-adressen i Outlook ender op encoded i
det felt hvor kun e-mail-adressen skulle have været. Hvad gør jeg forkert?
På forhånd tak
Torben
| |
Torben (29-11-2005)
| Kommentar Fra : Torben |
Dato : 29-11-05 11:48 |
|
Hej medkæmperer
Er mit virkelig så indviklet? Jeg har ikke selv fundet en løsning på
problemet. Det virker sgu underligt!
Håber og tror stadig
"Torben" <ichouse@mail.dk> skrev i en meddelelse
news:438b1e33$0$99982$edfadb0f@dread16.news.tele.dk...
> Hej alle
>
> Jeg har bakset en del med at sammensætte en header til afsending fra en
> hjemmeside. Sproget er PHP og kommandoen phps mail($toaddress, $subject,
> $mailcontent, $headers);
>
> men det kniber at få headeren sammensat rigtigt!
>
> Indtil videre er jeg nået hertil:
>
> $toaddress = $tiladresse;
> $subject = $subject." - ".date("d.m.Y",mktime());
>
> $charset = "iso-8859-1"; //
> $fra = encode($fra, $charset);
> $email = $fraEmail;
>
> $priorities = array( '1 (Highest)', '2 (High)', '3 (Normal)', '4
> (Low)', '5 (Lowest)' );
> $priority = $priorities[1];
>
> $headers = "MIME-Version: 1.0\r\n";
> $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
> $headers .= "X-Priority: 3\n";
> $headers .= "X-MSMail-Priority: Normal\n";
> $headers .= "X-Mailer: php\n";
> $headers .= "From: ".$fra." <".$email.">\n";
> $headers .= "BCC: xxx@mail.dk\n";
>
> $sended = mail($toaddress, $subject, $mailcontent, $headers);
>
> Det hele fungerer fint undtagen i de situationer hvor æøå indgår i
> FRA-adressen. Functionen encode har jeg brugt for at undgå dette. Den ser
> ud på denne måde:
>
> function encode($in_str, $charset) {
> $out_str = $in_str;
> if ($out_str && $charset) {
> $start = "=?" . $charset . "?B?";
> $end = "?=";
> $spacer = $end . "\r\n " . $start;
> $length = 75 - strlen($start) - strlen($end);
> $length = floor($length/2) * 2;
> $out_str = base64_encode($out_str);
> $out_str = chunk_split($out_str, $length, $spacer);
> $spacer = preg_quote($spacer);
> $out_str = preg_replace("/" . $spacer . "$/", "", $out_str);
> $out_str = $start . $out_str . $end;
> }
> return $out_str;
> }
>
> PROBLEMET er at fra-navn og fra-e-mail-adressen i Outlook ender op encoded
> i det felt hvor kun e-mail-adressen skulle have været. Hvad gør jeg
> forkert?
>
> På forhånd tak
> Torben
>
>
>
| |
Tom Sommer (30-11-2005)
| Kommentar Fra : Tom Sommer |
Dato : 30-11-05 11:38 |
|
Torben wrote:
> Jeg har bakset en del med at sammensætte en header til afsending fra en
> hjemmeside. Sproget er PHP og kommandoen phps mail($toaddress, $subject,
> $mailcontent, $headers);
>
> men det kniber at få headeren sammensat rigtigt!
[snip ..]
> PROBLEMET er at fra-navn og fra-e-mail-adressen i Outlook ender op encoded i
> det felt hvor kun e-mail-adressen skulle have været. Hvad gør jeg forkert?
Kan anbefale http://phpmailer.sourceforge.net/
--
Tom Sommer
http://www.tomsommer.dk
| |
|
|