smtplib в Python c smtp.yandex.ru
📁 python, вопрос, пример, работа
Юзаю 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 с сообщением, суть которого заключается в том что я веду себя как робот и мне надо привязать номер мобильного чтобы система перестала видеть во мне робота. Видимо, защита от подбора пароля.
Для яндекса у меня получилось пройти аутентификацию 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() Войдите чтобы оставить ответ