在问题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
所有这些都没有这些命令行选项。有什么建议,为什么这不起作用?
答案 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。