2009-06-09 4 views
12

Tôi cố gắng để gửi Email bằng this sample code và các tùy chọn dòng lệnh:Lỗi gửi e-mail thông qua máy chủ SMTP trên App máy chủ phát triển động cơ

dev_appserver.py --smtp_host=smtp.gmail.com --smtp_port=25 [email protected]_password=k1tt3ns myapp 

Tuy nhiên, tôi nhận được lỗi sau khi ứng dụng của tôi cố gắng gửi e-mail (trên máy chủ phát triển):

Traceback (most recent call last): 
    File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 500, in __call__ 
    handler.post(*groups) 
    File "C:\Documents and Settings\desk\Desktop\apps\temp\main.py", line 139, in post 
    """) 
    File "C:\Program Files\Google\google_appengine\google\appengine\api\mail.py", line 205, in send_mail 
    message.send(make_sync_call) 
    File "C:\Program Files\Google\google_appengine\google\appengine\api\mail.py", line 474, in send 
    make_sync_call('mail', self._API_CALL, message, response) 
    File "C:\Program Files\Google\google_appengine\google\appengine\api\apiproxy_stub_map.py", line 68, in MakeSyncCall 
    apiproxy.MakeSyncCall(service, call, request, response) 
    File "C:\Program Files\Google\google_appengine\google\appengine\api\apiproxy_stub_map.py", line 240, in MakeSyncCall 
    stub.MakeSyncCall(service, call, request, response) 
    File "C:\Program Files\Google\google_appengine\google\appengine\api\apiproxy_stub.py", line 80, in MakeSyncCall 
    method(request, response) 
    File "C:\Program Files\Google\google_appengine\google\appengine\api\mail_stub.py", line 203, in _Send 
    self._SendSMTP(mime_message, smtp_lib) 
    File "C:\Program Files\Google\google_appengine\google\appengine\api\mail_stub.py", line 133, in _SendSMTP 
    smtp.login(self._smtp_user, self._smtp_password) 
    File "C:\Python26\lib\smtplib.py", line 552, in login 
    raise SMTPException("SMTP AUTH extension not supported by server.") 
SMTPException: SMTP AUTH extension not supported by server. 
+0

Trước tiên, đảm bảo ISP của bạn cho phép bạn sử dụng máy chủ SMTP của bên thứ ba để gửi email. Hầu hết, nhưng một số nhà cung cấp sẽ chặn quyền truy cập vào máy chủ SMTP để đảm bảo khách hàng của họ sẽ không bắt đầu gửi spam cho thế giới. –

Trả lời

18

dev_appserver.py không hỗ trợ TLS được Gmail yêu cầu. Bạn có thể kích hoạt nó bằng cách thêm một vài dòng trong api/mail_stub.py:

# After smtp.connect(self._smtp_host, self._smtp_port) 
smtp.ehlo() 
smtp.starttls() 
smtp.ehlo() 

Lưu ý! Đó là giải pháp nhanh chóng và bẩn. Bạn nên thêm một số loại cờ để nói cho dù bạn muốn sử dụng TLS hay không, vì nó không phải lúc nào cũng mong muốn.

+0

hi Blixt, Cảm ơn bạn đã đưa ra giải pháp yêu cầu của tôi, với những thay đổi ở trên nó hoạt động tốt ... giống như gmail, công ty của tôi là một miền trong Google, với những thay đổi về chi tiết công ty của tôi. vị trí của gmail tôi đưa cho tên công ty của tôi ... nó có đúng không? như u nói trên giải pháp không được ưa thích một trong những gì có thể là giải pháp chính xác. – SKSK

+0

và sau đó trong triển khai, nó vẫn hoạt động? tôi không nghĩ rằng mình có thể chỉnh sửa tệp từ công cụ ứng dụng google api sdk –

+0

Có. API thư trực tiếp được định cấu hình bởi chính Google nên bạn không cần phải lo lắng về cách kết nối với máy chủ thư được thực hiện. – Blixt

4

@Raymond

Thực hiện lệnh sau trong Terminal:

find/-name "mail_stub.py" -type f 2>/dev/null 

Trong trường hợp của tôi nó sẽ trả về:

/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/mail_stub.py 
0

Các phương pháp khác là không còn cần thiết:

Đặt thông tin sau trong /appengine/api/mail_stub.py

if self._allow_tls and smtp.has_extn ('STARTTLS'): 
    smtp.starttls() 

công trình đối với tôi trên appengine sdk phiên bản 1.9.15

0

Tài khoản Google được sử dụng để gửi email từ một ứng dụng phải có một số thiết lập bảo mật vô hiệu hóa trong https://security.google.com/settings.

  • Disable truy cập cho các ứng dụng kém an toàn: truy cập cho các ứng dụng kém an toàn: Bật

Nếu bạn tiếp tục có những vấn đề xác thực bạn có thể phải xem xét các thiết bị & hoạt động tại https://security.google.com/settings/security/activity