发送从开发服务器电子邮件--smtp_host = smtp.gmail.com

问题描述:

在回答这个问题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

如果你真的真的需要从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

更改文件权限,以便您可以更改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

这不再是必要的

在/appengine/api/mail_stub.py

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

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