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

时间:2010-11-18 04:43:51

标签: google-app-engine smtp

在问题Error sending e-mail via SMTP server on App Engine development server的回答中,有一个nice solution by Blixt

"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 
--smtp_user=xxxx@gmail.com 
--smtp_password=gmail_pw 
C:\Users\A\Desktop\repeater # path to root directory

但我从Log Console收到此错误:

***********************************************************
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'--smtp_user=xxxx@gmail.com', 
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

所有这些都没有这些命令行选项。有什么建议,为什么这不起作用?

3 个答案:

答案 0 :(得分:2)

如果您真的需要从dev_appserver发送真实的电子邮件,您应该在您的计算机上设置自己的邮件中继,并指向SDK。我很好奇为什么发送真正的电子邮件非常重要 - 这是开发服务器,你不应该将它用于开发之外的其他任何东西。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

不再需要

在/appengine/api/mail_stub.py

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

我正在使用appengine sdk版本1.9.15。