【问题标题】:Sending Emails on GAE through smtp.gmail.com in Python在 Python 中通过 smtp.gmail.com 在 GAE 上发送电子邮件
【发布时间】:2018-08-31 19:51:35
【问题描述】:

阅读 Google 的文档后,应该可以通过 smtp.gmail.com 在 GAE 标准的 465 或 587 端口上发送电子邮件。 参考:https://cloud.google.com/appengine/docs/standard/python/sockets/#limitations_and_restrictions_if_lang_is_java_java_7_runtime_only_endif

未记录的是如何使用套接字库。

我可以通过在本地运行 python 脚本的 smtplib 发送电子邮件。

server = smtplib.SMTP_SSL("smtp.gmail.com", 587)
server.ehlo()
server.login(gmail_access["email"], gmail_access["password"])
server.sendmail(gmail_access["email"], report.owner, msg.as_string())
server.close()

当尝试使用 GAE 的 dev_appserver 运行代码时,我收到了不起眼的错误“[Errno 13] Permission denied

任何帮助将不胜感激。

【问题讨论】:

  • 您没有使用Mail API 是否有具体原因?这是sending an e-mail from App Engine 的文档。
  • 我不想被限制为每天 100 封电子邮件。如果我通过 gmail 发送,我会收到 2000 封电子邮件。仅供参考,电子邮件仅供内部使用,不允许授权服务帐户通过 Gmail API 插入电子邮件。

标签: python-2.7 email google-app-engine smtp


【解决方案1】:

奇怪的是,该错误仅在尝试使用 dev_appserver.py 在本地运行代码时发生。将代码部署到 App Engine 后,它就可以工作了。

import socket
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

msg = MIMEMultipart("alternative")
msg["Subject"] = subject
msg["From"] = gmail_access["email"]
msg["To"] = report.owner
msg.attach(MIMEText(body, "html"))

server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
server.ehlo()
server.login(gmail_access["email"], gmail_access["password"])
server.sendmail(gmail_access["email"], report.owner, msg.as_string())
server.close()

【讨论】:

    猜你喜欢
    • 2013-11-13
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 2015-08-22
    • 2014-06-27
    相关资源
    最近更新 更多