2010-11-18 198 views
4

在回答這個問題Error sending e-mail via SMTP server on App Engine development server有一個nice solution by Blixt發送從開發服務器電子郵件--smtp_host = smtp.gmail.com

"dev_appserver.py does not support TLS 
which is required by Gmail. You can 
enable it by adding a few lines in api/mail_stub.py:" 

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

但Windows Vista中不會讓我改變api/mail_stub.py

是否有另一種從開發服務器發送郵件的方法。其他選項(Sendmail和ISP不適合我)。謝謝!

編輯

我按照說明書here改變了api/mail_stub.py我用下面的命令行選項:

dev_appserver.py 
--smtp_host=smtp.gmail.com 
--smtp_port=25 
[email protected] 
--smtp_password=gmail_pw 
C:\Users\A\Desktop\repeater # path to root directory 

但我從登錄控制檯此錯誤:

*********************************************************** 
2010-11-18 10:24:37 Running command: "['C:\\Python26\\pythonw.exe', 
'C:\\Program Files(x86)\\Google\\google_appengine\\dev_appserver.py', 
'--admin_console_server=', 
'--port=8080', 
u'dev_appserver.py', 
u'--smtp_host=smtp.gmail.com', 
u'--smtp_port=25', 
u'[email protected]', 
u'--smtp_password=gmail_pw 
C:\\Users\\A\\Desktop\\repeater', 
'C:\\Users\\A\\Desktop\\repeater']" 

Runs a development application server for an application. 

dev_appserver.py [options] <application root> 

Application root must be the path to the application to run in this server. 
Must contain a valid app.yaml or app.yml file. 

**************************************************** 

這是app.yaml:

application: re-peater 
version: 1 
runtime: python 
api_version: 1 

handlers: 

- url: /favicon.ico 
    static_files: static/images/favicon.ico 
    upload: static/images/favicon.ico 

- url: /stylesheets 
    static_dir: stylesheets 

- url: /.* 
    script: repeater.py 

所有這些工作都沒有這些命令行選項。任何建議,爲什麼這是行不通的?

+0

我看到兩個問題。首先是使用端口25. Gmail僅通過加密連接進行身份驗證。嘗試587,因爲它似乎工作時,端口465不會。這可能與STARTTLS有關。並且TLS必須通過命令行arg啓用dev_appserver.py。如果這是明顯的泥,那麼它準確地反映了SMTP的狀態。 – 2017-01-04 04:19:46

回答

2

如果你真的真的需要從dev_appserver發送真正的郵件,你應該在你的機器上設置你自己的郵件中繼,然後指出SDK。我很好奇,爲什麼發送真正的電子郵件非常重要 - 但這是開發服務器,除了開發之外,您不應該使用它。

+0

是的,謝謝,我同意。但是我仍然在學習基礎知識,即使是簡單的任務也需要時間和反覆試驗。例如,我在http://groups.google.com/group/google-appengine/browse_thread/thread/42e046e858c87aa3?hl=en#上發佈了這個簡單的腳本,即使那個簡單的腳本不能像我想象的那樣工作。因此,我部署了該腳本並查看它是否發送電子郵件。現在應用程序引擎已關閉,並且出現500個錯誤。但是你是對的,可能它不值得開發服務器發送電子郵件。我會繼續上傳到應用引擎,直到它工作。 – Zeynel 2010-11-19 00:23:46

+1

等待在開發過程中將真實電子郵件發送到測試電子郵件地址有什麼問題? – Triptych 2011-06-08 08:07:37

+0

@Triptych Nothing - 讓它正常工作只需很多工作,因爲您需要一個接受信息的中繼。查看控制檯輸出通常更容易。 – 2011-06-09 01:38:20

1

更改文件權限,以便您可以更改api/mail_stub.py文件。

+0

我試着改變文件權限,但Vista不會允許。 http://www.vistax64.com/vista-file-management/29148-vista-forces-read-only-file-setting.html – Zeynel 2010-11-18 12:44:19

+0

我改變了這個文件,但是我得到一個錯誤信息,提示有問題的根目錄。如果沒有這些命令行選項,dev服務器將正常工作; app.yaml在目錄中。任何想法爲什麼這不起作用?我用上面的代碼添加了一個EDIT。謝謝。 – Zeynel 2010-11-18 15:53:44

1

這不再是必要的

在/appengine/api/mail_stub.py

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

我使用的AppEngine SDK版本15年1月9日。

相關問題