Skip to content

Commit 0efd6de

Browse files
authored
DEV-563 Send Email and Logging Logic (#69)
* Logic for logging and sending emails * Env variable comments
1 parent f76f569 commit 0efd6de

File tree

3 files changed

+34
-15
lines changed

3 files changed

+34
-15
lines changed

backend/.env.example

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,23 @@
1-
DEBUG=True
21
SECRET_KEY=
32

4-
# Auth0 Configuration
3+
# Set to True to get debug logs (Django, SQL queries, HTTP requests, service logs, etc.) in console
4+
DEBUG="True"
5+
# Set to True to indicate production environment. Sends emails to the listservs (CAUTION!!!)
6+
# If False, all emails are sent only to the current user
7+
PROD="False"
8+
# Set to True to turn on email sending
9+
# If False, DEBUG should be True to see emails printed in console
10+
SEND_EMAIL="False"
11+
12+
# Auth0
513
ALLOWED_HOSTS=
614
AUTH0_DOMAIN=
715
AUTH0_AUDIENCE=
816

9-
# Database Configuration
17+
# Database
1018
DATABASE_URL=""
11-
TEST_DATABASE_URL=""
19+
TEST_DATABASE_URL=""
20+
21+
# Mailjet
22+
MAILJET_PUBLIC_KEY=""
23+
MAILJET_PRIVATE_KEY=""

backend/config/settings.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030

3131
# SECURITY WARNING: don't run with debug turned on in production!
3232
DEBUG = os.getenv("DEBUG", "False").lower() == "true"
33+
PROD = os.getenv("PROD", "False").lower() == "true"
34+
SEND_EMAIL = os.getenv("SEND_EMAIL", "False").lower() == "true"
3335

3436
ALLOWED_HOSTS = os.getenv("ALLOWED_HOSTS", "").split(",")
3537

backend/hoagiemail/api/mail_view.py

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ def print_debug(message, schedule=None):
136136
"""Prints email contents for debugging purposes"""
137137
logger.debug("Email:")
138138
logger.debug(f"From: {message['From']['Name']} <{message['From']['Email']}>")
139+
logger.debug(f"ReplyTo: {message['ReplyTo']['Name']} <{message['ReplyTo']['Email']}>")
139140
logger.debug(f"To: {message['To'][0]['Email']}")
140141
logger.debug(f"Subject: {message['Subject']}")
141142
logger.debug(f"Body: {message['TextPart']}")
@@ -149,20 +150,26 @@ def print_debug(message, schedule=None):
149150

150151
def send_email(mail_data, sender_email):
151152
"""Sends email using Mailjet API"""
153+
# Create the message with actual content
152154
if mail_data["schedule"] != "test":
153-
message = create_message(mail_data, sender_email, HOAGIE_EMAIL)
154-
message["Cc"] = get_listservs()
155+
actual_message = create_message(mail_data, sender_email, HOAGIE_EMAIL)
156+
actual_message["Cc"] = get_listservs()
155157
else:
156-
message = create_message(mail_data, sender_email, sender_email)
158+
actual_message = create_message(mail_data, sender_email, sender_email)
157159

158-
# In debug mode, print email contents instead of sending
159-
if settings.DEBUG:
160-
print_debug(message)
160+
print_debug(actual_message)
161+
162+
if not settings.SEND_EMAIL:
161163
return
162164

165+
# Send email only to self if not in production
166+
to_send = actual_message
167+
if not settings.PROD and mail_data["schedule"] != "test":
168+
to_send = create_message(mail_data, sender_email, sender_email)
169+
163170
# Send email via Mailjet
164171
mailjet = get_mailjet_client()
165-
result = mailjet.send.create(data={"Messages": [message]})
172+
result = mailjet.send.create(data={"Messages": [to_send]})
166173

167174
result_status = result.status_code
168175
if result_status == 200:
@@ -200,10 +207,8 @@ def handle_scheduled_email(mail_data, user):
200207
return "You already have an email scheduled for this time. If you would like to change your message, please \
201208
delete your mail in the Scheduled Emails page and try again."
202209

203-
if settings.DEBUG:
204-
message = create_message(mail_data, user.email, HOAGIE_EMAIL)
205-
print_debug(message, schedule=schedule_time_et)
206-
return
210+
message = create_message(mail_data, user.email, HOAGIE_EMAIL)
211+
print_debug(message, schedule=schedule_time_et)
207212

208213
# Create scheduled email
209214
ScheduledEmail.objects.create(

0 commit comments

Comments
 (0)