|
| 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 |
| | |
|
|