41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
import os
|
|
from threading import Thread
|
|
import requests
|
|
|
|
|
|
def handle_send(data):
|
|
if "from" not in data:
|
|
data["from"] = "{} <{}>".format(
|
|
os.environ.get("APP_NAME"), os.environ.get("FROM_EMAIL")
|
|
)
|
|
if "to_user" in data:
|
|
user = data["to_user"]
|
|
data["to"] = user["username"] + " <" + user["email"] + ">"
|
|
del data["to_user"]
|
|
data["text"] += (
|
|
"\n\nFrom the team at {0}\n\n\n\n--\n\nDon't like this email? Choose which emails you receive from {0} by visiting {1}/settings/notifications\n\nReceived this email in error? Please let us know by contacting {2}".format(
|
|
os.environ.get("APP_NAME"),
|
|
os.environ.get("APP_URL"),
|
|
os.environ.get("CONTACT_EMAIL"),
|
|
)
|
|
)
|
|
data["reply-to"] = os.environ.get("CONTACT_EMAIL")
|
|
|
|
base_url = os.environ.get("MAILGUN_URL")
|
|
api_key = os.environ.get("MAILGUN_KEY")
|
|
if base_url and api_key:
|
|
auth = ("api", api_key)
|
|
try:
|
|
response = requests.post(base_url, auth=auth, data=data)
|
|
response.raise_for_status()
|
|
except Exception:
|
|
print("Unable to send email")
|
|
else:
|
|
print("Not sending email. Message pasted below.")
|
|
print(data)
|
|
|
|
|
|
def send(data):
|
|
thr = Thread(target=handle_send, args=[data])
|
|
thr.start()
|