inviare email con python [ERA: Programma in SH ]
Il ven, mar 21, 2014 at 6:44 , Gian Uberto Lauri <saint@eng.it> ha scritto:
fede@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:
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'?
Reply to: