Newsgroup: it.comp.lang.perl
Titolo: MIME::QuotedPrint .. chiarimenti ..

mi sapreste chiarire a cosa serve il modulo MIME::QuotedPrint. Cioè a cosa
serve, diciamo che a grandi linee l'ho capito più che altro vorrei sapere il
motivo per cui, se in uno script di invio email che utilizza un modulo
Net::SMTP, il testo della email codificato nei diversi datasend lo faccio
"passare" attraverso la funzione MIME::QuotedPrint::encode(), ottenendo a
video un testo che al posto dei caratteri accentati, contiene delle
occorrenze di tre caratteri costituiti dal simbolo di "=" seguito dal codice
esadecimale del carattere accentato (?), quando scarico l'email così fatta
da un programma di posta elettronica quale Outlook Express, il testo della
email contiene ancora la codifica dei caratteri accentati creati dalla
funzione encode(). Allora a che cosa mi è servito la funzione
MIME::QuotesPrint::encode(), se una volta visualizzata l'email i caratteri
accentati non vengono "decodificati".
Il modello di script a cui accennavo può essere di questo tipo:
....
use MIME::QuotedPrint ();
use Net::SMTP;
....
$smtp->data();
$smtp->datasend("To: .......");
$smtp->datasend("From: ....");
....
....
$row = MIME::QuotedPrint::encode(" stringa che contiene caratteri
accentati");
$smtp->datasend($row);
......
......
$smtp->dataend();
$smtp->quit;

 funzione encode(). 
Aggiungi l'header:
 Content-Transfer-Encoding: quoted-printable
Max

 wrote in message
Pine.LNX.4.10.10006...@c64.comm2000.it...


 
Il Content-Type ce l'hai messo?
 Content-Type: text/plain; charset="iso-8859-1"
 Content-Transfer-Encoding: quoted-printable
Max


Si, ho aggiunto l'header Content-Type e Content-Trasnfer-Encoding, ma adesso
quando visualizzo l'email al posto di =...  mi vengono visualizzati i
caratteri ASCII come mi venivano mostrati prima della codifica con
QuotedPrint ..... Cioč l'occorrenza "=8A" adesso mi viene viaualizzata come
"S" ...????
[Cut]
  ........
  $smtp->datasend('--_----------=_962526933-3874750',"\n");
  $smtp->datasend('Content-Type: text/plain; charset="iso-8859-1"',"\n");
  $smtp->datasend('Content-Transfer-Encoding: quoted-printable');
  $smtp->datasend("\n\n");
  print "Sending body text message\n";
  open(TEXT, "$text") or die "Cannot open file $!";
  while (<TEXT>)
  {
    $row = MIME::QuotedPrint::encode($_);
    $smtp->datasend($row);
  }
  $smtp->datasend("\n\n");
  print "Body text sent\n";
[cut]
.......

se il testo che viene processato dal metodo MIME::QuotePrint::encode(), lo
creo utilizzando l'edit del DOS, il risultato č che i caratteri accentati
vengono si convertiti in occorrenze di "=8A, = ..." e poi tramite gli
headers "Content-Type: plain/text; charset="ISO-8859-1" e
"Content-Transfer-Encoding: quoted-printable", mi vengono decodificati nei
caratteri di origine. Il problema che il codice che viene attribuito ai
caratteri che codifico tramite "..encode()" non č il codice giusto cioč: se
creo un testo con l'edit del DOS che contiene il carattere "č", questo mi
viene codificato in "=8A", che nel charset="ISO-8859-1" non corrisponde al
carattere "č" ma risulta essere parte di una porzione di codice ISO-8859-1
inutilizzata.
Se invece creo il medesimo testo con il NotePad di Windows, per esempio, lo
stesso carattere viene codificato dopo l'operazione di encoding in "=E8" che
nella tabella ISO-8859-1 corrisponde veramente al carattere accentato "č".
Quindi il mio problema era solamente il mezzo con cui creavo il testo che
doveva essere spedito.
Ma quindi l'EDIT del DOS utilizza una tabella di codici differente da quella
che utilizza il NptePad per mappare i caratteri ?????