2009-05-19 3 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() 

Это дает ошибку:как отправить электронную почту в питона

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

Какая версия Python это? – TML

+0

Переформатированный немного. –

+3

Не могли бы вы избавиться от вики сообщества. Хех. –

ответ

12

Переименовать файл на что-то другое, чем email.py. Также избавитесь от любого файла email.pyc. Задача решена.

+2

Это действительно исправляет проблему ... Но каков был ее источник? – joce

+0

email - это модуль в стандартной библиотеке python, который используется smtplib. Ваш файл был назван «email.py»: ваш модуль «email» заменил стандартный модуль python (потому что после него в PYTHONPATH) – gecco

5

Это происходит потому, что электронное письмо является built-in library, которое поставляется со стандартом python. Если вы переименуете свою программу на что-то еще (как было предложено выше), это должно сделать трюк.

+0

Я не понимал, что пространство имен Python было/that/poor. –

+2

Это не пространство имен, это библиотека. То же самое произойдет, если вы поместите свой собственный файл system32.dll или что-нибудь в свою директорию exe. он ищет email.py, и просто найти его в исходном каталоге, а не в каталоге python libs. – SpliFF

+7

Что значит «бедный»? Это абсолютная функция убийцы Python - способность переопределять все, что вам нравится, когда захотите. Философия Python - это «мы все соглашаемся с взрослыми здесь» и позволяет вам делать то, что вам нравится. –

Смежные вопросы