аватар question@mail.ru · 01.01.1970 03:00

smtplib в Python c smtp.yandex.ru

Юзаю Python 3.4.3. Хочу написать простенький скрипт, который будет отсылать на заданный ящик текстовую информацию. Нашёл : . В режиме интерпретатора ввожу:

>>> import smtplib>>> server = smtplib.SMTP('smtp.yandex.ru', 465)

И на второй строчке интерпретатор наглухо виснет. Для Яндекса инфу о сервере брал .

UPD: если использовать то же для Gmail:

server = smtplib.SMTP('smtp.gmail.com', 587)

То всё норм. Однако хочется (т.е. имеется ящик) подключаться к Яндексу. Возможно это?

UPD2: если для Яндекса юзать порт 587, то вторая строчка тоже проходит. Однако третья:

server.login(""youremailuseame"", ""password"")

Приводит к поднятию эксепшена smtplib.SMTPServerDisconnected

UDP3: нашёл . Делаю так:

import smtplibsmtp = smtplib.SMTP_SSL()smtp.connect('smtp.yandex.ru')

И вываливается ssl.SSLEOFError

UPD4: Нашёл и сделал так:

server = smtplib.SMTP_SSL('smtp.yandex.ru:465')server.login('login', 'pass')

И всё заработало. Заработало в том смысле, что пришло smtplib.SMTPAuthenticationError с сообщением, суть которого заключается в том что я веду себя как робот и мне надо привязать номер мобильного чтобы система перестала видеть во мне робота. Видимо, защита от подбора пароля.

аватар answer@mail.ru · 01.01.1970 03:00

Для яндекса у меня получилось пройти аутентификацию AUTH PLAIN через SSL соединение. Работает такой код:

#!/usr/bin/env python3import smtplib as smtpfrom getpass import getpassemail = input('введите почту: \n')password = getpass('введите пароль: ')dest_email = input('введите адрес получателя: \n')subject = input('тема письма: \n')email_text = input('текст письма: \n' )message = 'From: {}\nTo: {}\nSubject: {}\n\n{}'.format(email,                                                       dest_email,                                                        subject,                                                        email_text)server = smtp.SMTP_SSL('smtp.yandex.com')server.set_debuglevel(1)server.ehlo(email)server.login(email, password)server.auth_plain()server.sendmail(email, dest_email, message)server.quit()

Последние

Похожие