/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste