2016-05-14 24 views
5

Pythonie Chcę wysłać wiadomość e-mail z mojej aplikacji, ale to pokazuje błądSMTP AUTH rozszerzenie nie jest obsługiwana przez serwer

SMTP AUTH extension not supported by server 

kodu programu,

import smtplib 
from email.MIMEMultipart import MIMEMultipart 
from email.MIMEText import MIMEText 
fromaddr = "[email protected]" 
toaddr = "[email protected]" 
msg = MIMEMultipart() 
msg['From'] = fromaddr 
msg['To'] = toaddr 
msg['Subject'] = "Test Mail" 
body = "Test mail from python" 
msg.attach(MIMEText(body, 'plain')) 
server = smtplib.SMTP('smtp.example.com', 25) 
server.ehlo() 
server.starttls() 
server.ehlo() 
server.login(fromaddr, "password") 
text = msg.as_string() 
server.sendmail(fromaddr, toaddr, text) 
server.quit() 

Telnet wyjściowa:

ehlo test1.example.com 
250-hidden 
250-HELP 
250-SIZE 104857600 
250-ENHANCEDSTATUSCODES 
250-8BITMIME 
250-STARTTLS 
250 OK 

Potrzebuję uwierzytelnić i wysłać pocztę z aplikacji.

Odpowiedz

8

połączenie jest wymagane przed zalogowaniem i wysłaniem wiadomości e-mail.

server = smtplib.SMTP('smtp.example.com', 25) 
server.connect("smtp.example.com",465) 
server.ehlo() 
server.starttls() 
server.ehlo() 
server.login(fromaddr, "password") 
text = msg.as_string() 
server.sendmail(fromaddr, toaddr, text) 
server.quit() 
+0

Po nawiązaniu połączenia 'server.connect' działało dobrze. Dzięki! – KKD

+0

Dobrze byłoby wyjaśnić, co tu jest 465! –

+1

Port 465 jest przeznaczony dla SMTPS. Jeśli nie udostępniasz żadnego portu, domyślnie jest ustawiony na 25. Szyfrowanie SSL jest uruchamiane automatycznie przed każdą komunikacją na poziomie SMTP podczas korzystania z SMTPS. – Kris