2013-06-26 5 views
4

Я хочу отправить электронное письмо с помощью Python 3. Я еще не могу понять примеры, которые я видел. Вот одна ссылка:Python 3 | Отправить письмо - SMTP - gmail - Ошибка: SMTPException

Я вытащил первый простой пример, найденный в приведенной выше ссылке. Я нахожу этот пример хорошим примером сочетания примеров, которые я видел в Интернете. Кажется, это основная форма того, что я делаю.

Когда я пытаюсь код ниже, я получаю ошибки:

File "C:\Python33\Lib\email.py", line 595, in login 
    raise SMTPException("SMTP AUTH extension not supported by server.") 
smtplib.SMTPException: SMTP AUTH extension not supported by server. 

Вот код:

# Send Mail 

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

# Log in to the server 
server.login("[email protected]","myPassword") 

# Send mail 
msg = "\nHello!" 
server.sendmail("[email protected]","[email protected]", msg) 

ответ

17

Я нашел решение на YouTube.

Адрес video link.

# smtplib module send mail 

import smtplib 

TO = '[email protected]' 
SUBJECT = 'TEST MAIL' 
TEXT = 'Here is a message from python.' 

# Gmail Sign In 
gmail_sender = '[email protected]' 
gmail_passwd = 'password' 

server = smtplib.SMTP('smtp.gmail.com', 587) 
server.ehlo() 
server.starttls() 
server.login(gmail_sender, gmail_passwd) 

BODY = '\r\n'.join(['To: %s' % TO, 
        'From: %s' % gmail_sender, 
        'Subject: %s' % SUBJECT, 
        '', TEXT]) 

try: 
    server.sendmail(gmail_sender, [TO], BODY) 
    print ('email sent') 
except: 
    print ('error sending mail') 

server.quit() 
2

По состоянию на середину октября 2017 года, Gmail не принимает соединения через smtplib.SMTP() порт 587, но требует smtplib.SMTP_SSL() и порт 465. Это немедленно начинает TLS, и ehlo не требуется. Попробуйте этот фрагмент вместо:

# Gmail Sign In 
gmail_sender = '[email protected]' 
gmail_passwd = 'password' 

server = smtplib.SMTP_SSL('smtp.gmail.com', 465) 
server.login(gmail_sender, gmail_passwd) 

# build and send the email body.