2012-02-09 21 views
13

Đây là mã bình thường của tôi trong VPS lưu trữ của tôi mà cung cấp python 2,4SMTP AUTH phần mở rộng không được hỗ trợ bởi máy chủ trong 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 

nhưng tiếc là trở lại tin nhắn này! : SMTP AUTH extension not supported by server.

trong máy tính của tôi mà tôi đã cài đặt python 2.7 i tìm thấy các giải pháp và nó làm việc rất tốt ở đây là mã này:

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 

Nhưng trong VPS mà cài đặt python 2.4 không có SMTP_SSL() và trả lại thông báo này 'module' object has no attribute 'SMTP_SSL'

Ngoài ra tôi đã cố gắng nâng cấp python của tôi trong VPS nhưng những gì đã xảy ra là làm hỏng toàn bộ python có nghĩa là python không hoạt động chút nào.

Trả lời

15

Guys cảm ơn tôi đã tìm thấy các giải pháp và đây là giải pháp =)

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

bạn không thể chạy '' ehlo'' hoặc '' starttls'' trước '' connection''. Bên cạnh đó không có ý nghĩa gì cả, nó làm tăng một ngoại lệ ('' SMTPServerDisconnected''). – emyller

+2

Bạn không cần thực hiện cuộc gọi s.ehlo() đầu tiên. s.starttls() sẽ gọi nó cho bạn. Tôi xác nhận điều này trong 2,7, 2,4 tài liệu âm thanh giống như nó hoạt động theo cùng một cách trong phiên bản đó. – Ian

+0

Nó có thể là giá trị nói rằng đó là ehlo đôi() xuất hiện để làm cho công việc này .. –

0

Có phải SMTP.starttls() có sẵn không? Bạn cũng có thể làm ví dụ:

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

kết quả chính xác^_^'mở rộng AUTH SMTP không được hỗ trợ bởi server' – Hamoudaq

Các vấn đề liên quan