2009-05-19 8 views
2
import smtplib 

SERVER = "localhost" 

FROM = "[email protected]" 
TO = ["[email protected]"] 

SUBJECT = "Hello!" 

TEXT = "This message was sent with Python's smtplib." 
server = smtplib.SMTP(SERVER) 
server.sendmail(FROM, TO, message) 
server.quit() 

Cela donne l'erreur:comment envoyer e-mail en python

'**The debugged program raised the exception unhandled AttributeError 
"'module' object has no attribute 'SMTP'" 
File: /home/an/Desktop/email.py, Line: 13**' 
+0

Quelle est la version de Python? – TML

+0

Reformaté un peu. –

+3

Pourriez-vous vous débarrasser du wiki de la communauté? Il h. –

Répondre

12

Renommez le fichier autre chose que email.py. Débarrassez-vous également de tout fichier email.pyc qui reste. Problème résolu.

+2

Il résout en effet le problème ... Mais quelle en était la source? – joce

+0

email est un module de la bibliothèque python standard utilisée par smtplib. Votre fichier a été nommé "email.py": Votre module "email" a remplacé le module standard de python (car après dans PYTHONPATH) – gecco

5

Cela se produit parce que le courrier électronique est un built-in library qui est livré en standard avec python. Si vous renommez votre programme en quelque chose d'autre (comme suggéré ci-dessus), cela devrait faire l'affaire.

+0

Je ne savais pas que l'espace de noms de Python était/that/poor. –

+2

ce n'est pas un espace de noms, c'est une bibliothèque. La même chose se produirait si vous mettez votre propre system32.dll ou quoi que ce soit dans votre répertoire exe. il cherche email.py et il est juste arrivé de le trouver dans le répertoire source plutôt que dans le répertoire python libs. – SpliFF

+7

Que voulez-vous dire par «pauvre»? Ceci est une caractéristique de tueur absolue de Python - la possibilité de remplacer ce que vous voulez, quand vous le souhaitez. La philosophie de Python est «nous sommes tous des adultes consentants ici», et vous permet de faire ce que vous aimez. –

Questions connexes