gnuheter-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gnuheter-dev] patch fr ån paf


From: Patrik Wallstrom
Subject: Re: [Gnuheter-dev] patch fr ån paf
Date: Sun, 24 Nov 2002 14:10:13 +0100
User-agent: Mutt/1.4i

On Sun, 24 Nov 2002, Ulf Harnhammar wrote:

> On Sun, 24 Nov 2002, Patrik Wallstrom wrote:
> 
> > Paf har skickat en patch som rättar till ett fel i mailutskicket när
> > man registrerar sig (han bor i Skåne och har registrerat sig på Arons
> > site). Han har visserligen rätt i att kodningen på mailet är fel, och
> > inte identifierar sig som iso-8859-1, men patchen är inte så snyggt
> > gjord, men borde ändå lösas nästan så. Mailet ska konstrueras, och
> > sedan matas igenom en quoted-printable-funktion, eller markeras som
> > iso-8859-1. Kolla patchen på det han tyckte var fel.
> 
> Hmm, någon PHP-utvecklare har lagt in funktionen
> quoted_printable_decode() men ingen quoted_printable_encode(). Dumt. Man
> får väl skriva en egen.

function quoted_printable_encode($input, $line_max = 76) {
    $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";
    $linebreak = "=0D=0A";
    $escape = "=";
    $output = "";

    for ($j=0;$j<count($lines);$j++) {
        $line = $lines[$j];
        $linlen = strlen($line);
        $newline = "";
        for($i = 0; $i < $linlen; $i++) {
            $c = substr($line, $i, 1);
            $dec = ord($c);
            if ( ($dec == 32) && ($i == ($linlen - 1)) ) { // convert space at 
eol only
                $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 = "    ";
            }
            $newline .= $c;
        } // end of for
        $output .= $newline;
        if ($j<count($lines)-1) $output .= $linebreak;
    }
    return trim($output);
}

Vet inte om min Emacs pajade nåt nu, men finns här också:

http://www.php.net/manual/en/function.quoted-printable-decode.php

> Måste inte mailheadern "MIME-Version: 1.0" vara med också? Dessutom såg
> väl subject-raden lite konstig ut. Den ska ju vara speciell, enligt RFC
> 2047.

Hm, vet faktiskt inte, jag har bara dekodat MIME de senaste veckorna
:)

Subject-raden måste väl vara kodad också. Går det förresten inte att
vara 8-bitars-clean om man berättar det?

-- 
patrik_wallstrom->foodfight->address@hidden>+46-733173956
                `-> http://www.gnuheter.com/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]