Не удается отправить электронную почту через python с помощью gmail – smtplib.SMTPException: расширение SMTP AUTH не поддерживается сервером

Я просто хочу отправить электронное письмо в python со вложением

import smtplib, os from email.MIMEMultipart import MIMEMultipart from email.MIMEBase import MIMEBase from email.MIMEText import MIMEText from email.Utils import COMMASPACE, formatdate from email import Encoders def send_mail(send_from, send_to, subject, text, files=[], server="localhost"): assert type(send_to)==list assert type(files)==list msg = MIMEMultipart() msg['From'] = send_from msg['To'] = COMMASPACE.join(send_to) msg['Date'] = formatdate(localtime=True) msg['Subject'] = subject msg.attach( MIMEText(text) ) for f in files: part = MIMEBase('application', "octet-stream") part.set_payload( open(f,"rb").read() ) Encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f)) msg.attach(part) smtp = smtplib.SMTP('smtp.gmail.com:587') smtp.login('fu@gmail.com','fu') smtp.sendmail(send_from, send_to, msg.as_string()) smtp.close() ATTACHMENTS = ['/tmp/2013-11-04-test.csv'] send_from=['fu@gmail.com'] send_to=['fu@gmail.com'] subject='adfadfadf' text = 'adfadfadf' send_mail(send_from, send_to, subject, text, files=ATTACHMENTS) 

Как мне авторизоваться? Я должен указать имя пользователя и пароль. Как?

 Traceback (most recent call last): File "/home/ubuntu/workspace/miliza-devops/classes/utilities.py", line 133, in <module> send_mail(send_from, send_to, subject, text, files=ATTACHMENTS) File "/home/ubuntu/workspace/miliza-devops/classes/utilities.py", line 124, in send_mail smtp.login('fu@gmail.com','fu') File "/usr/lib/python2.7/smtplib.py", line 576, in login raise SMTPException("SMTP AUTH extension not supported by server.") smtplib.SMTPException: SMTP AUTH extension not supported by server. 

2 Solutions collect form web for “Не удается отправить электронную почту через python с помощью gmail – smtplib.SMTPException: расширение SMTP AUTH не поддерживается сервером”

Вам необходимо позвонить в starttls() перед starttls() систему:

 smtp = smtplib.SMTP('smtp.gmail.com:587') smtp.starttls() smtp.login('fu@gmail.com', 'fu') 

Кроме того, ваш send_from должен быть str , а не list :

 send_from='fu@gmail.com' 

Обратите внимание, что smtp.starttls() вызывает smtp.ehlo() неявно:

Если ранее не было предыдущей команды EHLO или HELO, этот метод сначала запускает ESMTP EHLO. https://docs.python.org/2/library/smtplib.html#smtplib.SMTP.starttls

На gmail вам также нужно предоставить smtp.ehlo() перед smtp.starttls() Это также дубликат Как отправить письмо с Gmail в качестве поставщика с помощью Python?

  • SMTPAuthenticationError при отправке почты с использованием gmail и python
  • Отправка gmail с ошибкой python
  • Что такое безопасный способ отправки электронной почты с использованием Python и Gmail в качестве поставщика?
  • Как получить доступ к переменным из разных классов в tkinter python 3
  • python & smtplib: отправляет почту через gmail с помощью oauth2?
  • Python 3 smtplib отправляет с символами unicode
  • Настройка другого ответа на сообщение в Python email / smtplib
  • Поддержка прокси-сервера python smtplib
  • как добавить ссылку href в содержание электронной почты при отправке электронной почты через smtplib
  • Как отправить электронное письмо с Python?
  • Ошибка номера версии Hotmail SSL3 с использованием smtp
  • Python - лучший язык программирования в мире.