Отправка писем на GAE через smtp.gmail.com в Python - PullRequest
0 голосов
/ 29 августа 2018

После прочтения документации Google должна быть возможность отправить электронное письмо через smtp.gmail.com через порт 465 или 587 по стандарту GAE. Справка: https://cloud.google.com/appengine/docs/standard/python/sockets/#limitations_and_restrictions_if_lang_is_java_java_7_runtime_only_endif

Что не задокументировано, так это использование библиотеки сокетов.

Я могу отправить электронное письмо через smtplib с локальным скриптом Python.

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()

При попытке запустить код с помощью dev_appserver GAE я получаю неописуемую ошибку " [Errno 13] В доступе отказано "

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 31 августа 2018

Как ни странно, ошибка возникает только при попытке запустить код локально с помощью 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()
...