/ 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
Sådan kan du formattere din mailto link
Fra : Mikkel


Dato : 05-07-07 11:29

Hej venner,

Nu er det på tide med bare lidt pay-back efter at have fået en del
hjælp her i begyndelsen.

Hvis du har en:

<a href=\"mailto:min-mail@hotmail.com?subject=Hej med dig&body=Hej
Mikkel\nNu skal du bare høre!"\">mail mig</a>

i din html/php så skal " " (mellemrum) og CRLF (newline) skiftes med
hhv. 32 og 16 (decimalt). Hvis man imidlertid skifter hex-værdien ind
i strengen vil de fleste browsere og Outlook mv. forstå det man vil -
altså at lave mellemrum og newlines i den associerede mail.

Til det formål har jeg fgl. simple php-fct.:

function FormatMailText($strText)
{
$strText = str_replace("\n", "%0A", $strText);
$strText = str_replace(" ", "%20", $strText);
return $strText;
}

Herefter skal dit link så begribeligvis være:

<a href=\"mailto:min-mail@hotmail.com?subject=FormatMailText("Hej med
dig")&body=FormatMailText("Hej Mikkel\nNu skal du bare høre!")\">mail
mig</a>

Det virker!

Jeg er ikke 100% inde i detaljerne omkr. hvad der skal skiftes i den
her situation MEN jeg formoder at alle special tegn skal skiftes med
sin hex-counterpart. Jeg slog op i "HTML 4 Lexikon" på s. 88f og fandt
"oversættelserne" her.

Der er formentlig 117 andre smarte måder at gøre dette på, men det er
da så en begyndelse. Skulle den udvides så skulle den gøres lidt mere
smart selvfølgelig.

vh.
Mikkel.


 
 
Martin (05-07-2007)
Kommentar
Fra : Martin


Dato : 05-07-07 17:16

Mikkel wrote:
> function FormatMailText($strText)
> {
> $strText = str_replace("\n", "%0A", $strText);
> $strText = str_replace(" ", "%20", $strText);
> return $strText;
> }

function quoted_printable_encode($string, $linelen = 0,
$linebreak="=\r\n", $breaklen = 0, $encodecrlf = false) {
   $string = utf8_encode($string);
// Quoted printable encoding is rather simple.
// Each character in the string $string should be encoded if:
// Character code is <0x20 (space)
// Character is = (as it has a special meaning: 0x3d)
// Character is over ASCII range (>=0x80)
$len = strlen($string);
$result = '';
for($i=0;$i<$len;$i++) {
if ($linelen >= 76) { // break lines over 76
characters, and put special QP linebreak
$linelen = $breaklen;
$result.= $linebreak;
}
$c = ord($string[$i]);
if (($c==0x3d) || ($c>=0x80) || ($c<0x20)) { // in this
case, we encode...
if ((($c==0x0A) || ($c==0x0D)) &&
(!$encodecrlf)) { // but not for linebreaks
$result.=chr($c);
$linelen = 0;
continue;
}
$result.='='.str_pad(strtoupper(dechex($c)), 2,
'0');
$linelen += 3;
continue;
}
$result.=chr($c); // normal characters aren't encoded
$linelen++;
}
return $result;
}

echo "<a
href=\"mailto:min-mail@hotmail.com?subject=".quoted_printable_encode("Hej
med dig"&body=".quoted_printable_encode(Hej Mikkel\nNu skal du bare
høre!)."\">mail mig</a>";

Jeppe Toustrup (05-07-2007)
Kommentar
Fra : Jeppe Toustrup


Dato : 05-07-07 19:56

Man kunne vel også bare nøjes med at bruge:
http://dk.php.net/rawurlencode

--
Venlig hilsen
Jeppe Toustrup

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste