python smtplib
-
06-07-2019 - |
Domanda
Ehi, ho un server Windows con script CGI python e ho qualche problema con smtplib. Il server esegue python 2.1 (purtroppo e non riesco ad aggiornarlo). Comunque ho il seguente codice:
session = smtplib.SMTP("smtp-auth.ourhosting.com", 587)
session.login(smtpuser, smtppass)
e mi sta dando questo errore:
exceptions.AttributeError : SMTP instance has no attribute 'login' :
Suppongo che questo sia dovuto al fatto che il metodo login () è stato aggiunto dopo Python 2.1. quindi come posso risolvere questo problema?
Devo aggiungere il modulo caricando i file nella stessa directory dello script cgi (anche se credo che smtplib sia scritto in C e debba essere compilato, cosa che non possiamo fare su questo server)
o
Fallo come previsto da libsmtp in python 2.1
Grazie mille!
Soluzione
login () è stato introdotto in Python 2.2, sfortunatamente per te! L'unico modo per farlo nello smtplib di Python 2.1 sarebbe quello di emettere manualmente i comandi AUTH, il che non sarebbe molto divertente.
Non l'ho provato completamente ma sembra che smtplib di Python 2.2 dovrebbe funzionare più o meno su 2.1 se lo copi come descrivi (forse lo chiami smtplib2.py). È solo un modulo Python, non dovrebbe essere necessaria alcuna compilazione C. Comunque dovrai almeno copiare la libreria hmac.py su cui fa affidamento anche dalla lib di 2.2. Se usi una versione successiva di Python per rubare da essa, inizia anche a richiedere il pacchetto di posta elettronica che potrebbe essere più efficace.
Altri suggerimenti
Fallo come previsto da libsmtp in python 2.1