Il ven, mar 21, 2014 at 6:44 , Gian Uberto Lauri <sa...@eng.it> ha scritto:
f...@inventati.org writes:
 > Per l'appunto mi serviva questo esempio...
> Però la presenza di caratteri non ascii produce un errore. C'è un modo > pythonico per evitare il problema?

Usare UTF-8? Con python devi usare una stringa particolare subito dopo
la riga con lo shebang (#! she sta per shell e bang è un nomgnolo del
carattere !).
Ecco la stringa:

# -*- coding: utf-8 -*-

I problemi quando e dove li hai?

Probabilmente devi usare un editor un po' serio che ti permetta di dire
"usa la codifica utf-8", ne conosco almeno 2 per Linux, forse 3...

No, il problema è diverso.
L'encoding l'avevo messo.. Ora non ho più accesso al file, ci riprovo lunedì.

Comunque ho fatto una nuova prova prendendo spunto dal primo esempio che c'è qui:
http://docs.python.org/3.3/library/email-examples.html

Sto usando, come corpo del messaggio, un file di testo ascii (verificato con file), ma ottengo questo errore:

$ ./email-test.py Traceback (most recent call last):
 File "./email-test.py", line 14, in <module>
   msg = MIMEText(fp.read())
 File "/usr/lib/python3.3/email/mime/text.py", line 34, in __init__
   _text.encode('us-ascii')
AttributeError: 'bytes' object has no attribute 'encode'

La riga 14 del mio file è:
msg = MIMEText(fp.read())

Ah, trovato l'errore: non devo aprire il file come byte ma come stringa (?). Quindi riscrivo questa riga:

fp = open(textfile, 'rb')

così:

fp = open(textfile, 'r')

ora funziona.
Perché nella documentazione hanno messo 'rb'?


Rispondere a