2012-02-09 11 views
13

Questo è il mio codice normale nel mio VPS hosting che forniscono pitone 2,4estensione SMTP AUTH non supportata dal server python 2.4

def mail(receiver,Message): 
    import smtplib 
    try: 
     s=smtplib.SMTP() 
     s.connect("smtp.gmail.com",465) 
     s.login("[email protected]", "password") 
     s.sendmail("[email protected]", receiver, Message) 
    except Exception,R: 
      return R 

ma purtroppo restituire questo messaggio! : SMTP AUTH extension not supported by server.

nel mio computer che ho installare python 2.7 Ho trovato la soluzione ed è un lavoro molto bene qui è questo codice:

def mail(T,M): 
    import smtplib 
    try: 
     s=smtplib.SMTP_SSL() 
     s.connect("smtp.gmail.com",465) 
     s.login("[email protected]","your_password") 
     s.sendmail("[email protected]", T, M) 
    except Exception,R: 
      print R 

Ma nel VPS che ha installato Python 2.4 non ha SMTP_SSL() e restituire questo messaggio 'module' object has no attribute 'SMTP_SSL'

Inoltre ho provato ad aggiornare il mio python in VPS ma quello che è successo è Damage l'intero python che significa che Python non funziona affatto.

risposta

15

grazie ragazzi ho trovato la soluzione e questa è la soluzione =)

def mail(receiver,Message): 
    import smtplib 
    try: 
     s=smtplib.SMTP() 
     s.connect("smtp.gmail.com",465) 
     s.ehlo() 
     s.starttls() 
     s.ehlo() 
     s.login("[email protected]", "password") 
     s.sendmail("[email protected]", receiver, Message) 
    except Exception,R: 
      return R 
+1

voi impossibile eseguire '' ehlo'' o '' starttls'' prima di '' connection''. Oltre a non avere alcun senso, solleva un'eccezione ('' SMTPServerDisconnected''). – emyller

+2

Non è necessario effettuare la prima chiamata s.ehlo(). s.starttls() lo chiamerà per te. Ho confermato questo in 2.7, i 2.4 documenti sembrano comportarsi allo stesso modo in quella versione. – Ian

+0

Potrebbe valere la pena di dire esplicitamente che è il doppio ehlo() che sembra fare questo lavoro .. –

0

È disponibile SMTP.starttls()? È anche possibile fare ad esempio:

def mail(receiver,Message): 
    import smtplib 
    try: 
     s=smtplib.SMTP() 
     s.connect("smtp.gmail.com",587) 
     s.starttls() 
     s.login("[email protected]", "password") 
     s.sendmail("[email protected]", receiver, Message) 
    except Exception,R: 
      return R 
+1

risultato esatto^_^'estensione AUTH SMTP non supportata da server' – Hamoudaq