代码之家  ›  专栏  ›  技术社区  ›  Zeynel

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

  •  4
  • Zeynel  · 技术社区  · 15 年前

    在问题的答案中 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不适合我)。谢谢!

    编辑

    我改变了 API/邮件存根.py 根据指示 here 我使用以下命令行选项:

    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
    

    但我从日志控制台得到这个错误:

    ***********************************************************
    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 回复  |  直到 11 年前
        1
  •  2
  •   Nick Johnson    15 年前

    如果您真的,真的需要从dev-appserver发送真正的电子邮件,您应该在您的机器上设置自己的邮件中继,并将sdk指向它。我很好奇为什么发送真正的电子邮件如此重要——这是开发服务器,您不应该将它用于开发以外的任何其他用途。

        2
  •  1
  •   Robert Kluin    15 年前

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

        3
  •  1
  •   user3049407    11 年前

    这已经不需要了

    in/appengine/api/mail_存根.py

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

    我使用的是Appengine SDK版本1.9.15。

    推荐文章