2011-06-15 23 views
9

To może być powtarzające się pytanie, ale wciąż mam z tym problemy, mam nadzieję, że istnieje jakieś rozwiązanie. Z góry dziękuję.Rozszerzenie STARTTLS nie jest obsługiwane przez serwer

Próbuję wysłać poczty przez serwer firmy

obecnie używam wersji Pythona 2.6 i Ubuntu 10.04

To jest komunikat o błędzie mam

Traceback (most recent call last): 

    File "hxmass-mail-edit.py", line 227, in <module> 
    server.starttls() 

    File "/usr/lib/python2.6/smtplib.py", line 611, in starttls 
    raise SMTPException("STARTTLS extension not supported by server.") smtplib.SMTPException: STARTTLS extension not supported by server. 

Tu idzie część kodu

server = smtplib.SMTP('smtp.abc.com', 587) 
server.set_debuglevel(1) 
server.ehlo() 
server.starttls() 
server.ehlo() 
server.login('[email protected]', 'abc123') 
addressbook=sys.argv[1] 
+0

proszę opublikować fragment poczty wysyłającego kod. może to wystarczy, aby usunąć "server.starttls()", ale trudno powiedzieć bez kodu – Gryphius

Odpowiedz

0

Błąd mówi wszystko, wydaje się, że SMT P serwer sou nie obsługuje STARTTLS, a Ty aru wydaje server.starttls(). Spróbuj użyć serwera bez dzwonienia pod numer server.starttls().

Bez dodatkowych informacji jest jedynym, co mogę powiedzieć.

+0

dzięki Ferran, próbowałem nie używać server.starttls(), wydaje się, że nie wyszło dobrze zwracając listę błędów. – XXX

0

Czy jesteś pewien, że chcesz zaszyfrować (StartTLS) połączenie z serwerem pocztowym? Chciałbym skontaktować się z kimś, kto zna wnętrze tego serwera, aby sprawdzić, jakiego protokołu/szyfrowania użyć.

Mówisz, że po usunięciu połączenia z numerem server.starttls() otrzymujesz inną serię komunikatów o błędach. Czy możesz również opublikować te wiadomości?

Możesz również przeczytać na StartTLS, aby zrozumieć, co to jest i dlaczego chcesz z niego skorzystać. Wygląda na to, że piszesz program Poważna Biznes, w takim przypadku prawdopodobnie będziesz chciał zrozumieć, co robisz, pod względem bezpieczeństwa.

6

Usuń ehlo() przed starttls().

starttls() + ehlo() powoduje wyświetlenie dwóch komunikatów HELLO, które powodują, że serwer usuwa komunikat STARTTLS.

server = smtplib.SMTP('smtp.abc.com', 587) 
server.starttls() 
server.ehlo() 
server.login('[email protected]', 'abc123') 
+0

To nie działa dla Yahoo. Yahoo działa tylko po usunięciu 'startTLS'. Ale potrzebuję TLS, aby upewnić się, że hasło nie jest przechwytywane przez sniffery. – Ajoy

3

usuwania server.ehlo() przed server.starttls() pomógł mi mój kod działa! Dziękuję, Leonard! mój kod:

s = smtplib.SMTP("smtp.gmail.com",587) 
s.starttls() 
s.ehlo 
try: 
    s.login(gmail_user, gmail_psw) 
except SMTPAuthenticationError: 
    print 'SMTPAuthenticationError' 
s.sendmail(gmail_user, to, msg.as_string()) 
s.quit() 
-3

Tak oddanie server.starttls() powyżej server.ehlo() rozwiązać ten.

1

jestem w stanie rozwiązać problemu z poniższym kodzie, dodając numer portu z nazwy serwera:

server = smtplib.SMTP('smtp.abc.com:587') 
Powiązane problemy