在Python中通过smtp.gmail.com在GAE上发送电子邮件

时间:2018-08-29 16:41:24

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

在阅读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]权限被拒绝

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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()