Следующий код работает на меня:
import smtplib
FROMADDR = "my.real.address@gmail.com"
LOGIN = FROMADDR
PASSWORD = "my.real.password"
TOADDRS = ["my.real.address@gmail.com"]
SUBJECT = "Test"
msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"
% (FROMADDR, ", ".join(TOADDRS), SUBJECT) )
msg += "some text\r\n"
server = smtplib.SMTP('smtp.gmail.com', 587)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.login(LOGIN, PASSWORD)
server.sendmail(FROMADDR, TOADDRS, msg)
server.quit()
я использую Редактирование Python 2.5.2.
: измененный порт от 25 до 587, как предложено О¤О–О©О¤О–О™ОџОҐ, и отбросил второй ehlo (). Теперь я хотел бы знать, почему порт 25 работ отлично от моей машины (и порт 465 делает не ).
Корректный способ соединиться с Gmail с помощью SSL:
server = smtplib.SMTP('smtp.gmail.com', 587)
Порт 465, кажется, вызывает задержки. Оба порта определяются в GMail FAQ.
Примечание, что использование порта 587 более характерно для SMTP по SSL, хотя это - просто тривиальная информация, она не имеет никакого другого практического применения.
Этот ответ предоставлен как сообщество Wiki, чтобы быть выбранным в качестве ответа. Улучшитесь по мере необходимости.
Вот является простой бросок далеко решением. Предназначенный для вставки этого ранее, но заснул в моем стуле.
import smtplib
import email
import os
username = "user@gmail.com"
passwd = "password"
def mail(to, subject, text, attach):
msg = MIMEMultipart()
msg['From'] = username
msg['To'] = to
msg['Subject'] = subject
msg.attach(MIMEText(text))
part = MIMEBase('application', 'octet-stream')
part.set_payload(open(attach, 'rb').read())
Encoders.encode_base64(part)
part.add_header('Content-Disposition',
'attachment; filename="%s"' % os.path.basename(attach))
msg.attach(part)
server = smtplib.SMTP("smtp.gmail.com", 495)
server.ehlo()
server.starttls()
server.ehlo()
server.login(username, passwd)
server.sendmail(username, to, msg.as_string())
server.close()
mail("you", "hi", "hi", "webcam.jpg")
Это - мое предположение, что большинство людей на этом потоке, которые имели успешные попытки с их кодом, не находится на win32.;)
*edit: См. http://docs.python.org/library/email-examples.html для некоторых хороших "официальных" примеров.
Необходимо проверить порт, я не уверен, что порт SMTP Google равняется 65, который объяснил бы тайм-аут.
Изменяют Ваши источники как таковые:
smtplib. SMTP_SSL ('smtp.google.com', 465)
, Если, однако, Вы уверены, что он должен работать, и он не делает, кажется, что существуют некоторые проблемы с smtplib. SMTP_SSL, и существует доступный патч для него здесь .
Неправильный порт, возможно? Я использую 587 для smtp.gmail.com , и это работает.
Хорошо, узнанный, который добивается цели эта строка кода!
сервер = smtplib. SMTP ('smtp.gmail.com', 587)
Оказался Gmail, не поддерживал SSL на порте 25 (и порт 465 вызвал подвешивание по некоторым причинам).
парни Спасибо!
Проблема связана с ошибкой в Python . Попытка создать соединение с SMTP_SSL завершится неудачей с "SMTPServerDisconnected: сначала запустите connect ()"
Исправление было зафиксировано, поэтому вы можете исправить свою локальную копию. См. Вложение "smtplib_72551.diff".
(Примечание: