JMKrimm
JMKrimm

Reputation: 224

Sending Emails on GAE through smtp.gmail.com in Python

After reading Google's documentation it should be possible to send an email via smtp.gmail.com on port 465 or 587 on GAE standard. Reference: https://cloud.google.com/appengine/docs/standard/python/sockets/#limitations_and_restrictions_if_lang_is_java_java_7_runtime_only_endif

What is not documented is how to use the socket library.

I am able to send an email via smtplib running the python script locally.

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

When trying to run the code with GAE's dev_appserver I get the nondescript error "[Errno 13] Permission denied"

Any assistance would be greatly appreciated.

Upvotes: 1

Views: 784

Answers (1)

JMKrimm
JMKrimm

Reputation: 224

Oddly enough the error only occurs when trying to run the code locally with dev_appserver.py. After deploying the code to App Engine it worked.

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

Upvotes: 1

Related Questions