aboutsummaryrefslogtreecommitdiff
path: root/services/users/mail_send.py
diff options
context:
space:
mode:
Diffstat (limited to 'services/users/mail_send.py')
-rw-r--r--services/users/mail_send.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/services/users/mail_send.py b/services/users/mail_send.py
new file mode 100644
index 00000000..df837a32
--- /dev/null
+++ b/services/users/mail_send.py
@@ -0,0 +1,75 @@
+# python script for sending SMTP configuration with Oracle Cloud Infrastructure Email Delivery
+import email.utils
+import smtplib
+import ssl
+from email.message import EmailMessage
+
+from django.conf import settings
+
+
+def send_email(sender, sender_name, recipient, subject, body_html, body_text):
+ # Replace [email protected] with your "From" address.
+ # This address must be verified.
+ # this is the approved sender email
+ SENDER = sender
+ SENDERNAME = sender_name
+
+ # Replace [email protected] with a "To" address. If your account
+ # is still in the sandbox, this address must be verified.
+ RECIPIENT = recipient
+
+ # Replace the USERNAME_SMTP value with your Email Delivery SMTP username.
+ USERNAME_SMTP = settings.USERNAME_SMTP
+
+ # Put the PASSWORD value from your Email Delivery SMTP password into the following file.
+ PASSWORD_SMTP = settings.PASSWORD_SMTP
+
+ # If you're using Email Delivery in a different region, replace the HOST value with an appropriate SMTP endpoint.
+ # Use port 25 or 587 to connect to the SMTP endpoint.
+ HOST = settings.EMAIL_HOST
+ PORT = settings.EMAIL_PORT
+
+ # The subject line of the email.
+ SUBJECT = subject
+
+ # The email body for recipients with non-HTML email clients.
+ BODY_TEXT = body_text
+
+ # The HTML body of the email.
+ BODY_HTML = body_html
+
+ # create message container
+ msg = EmailMessage()
+ msg["Subject"] = SUBJECT
+ msg["From"] = email.utils.formataddr((SENDERNAME, SENDER))
+ msg["To"] = RECIPIENT
+
+ # make the message multi-part alternative, making the content the first part
+ msg.add_alternative(BODY_TEXT, subtype="text")
+ # this adds the additional part to the message
+ # According to RFC 2046, the last part of a multipart message, in this case
+ # the HTML message, is best and preferred.
+ msg.add_alternative(BODY_HTML, subtype="html")
+
+ # Try to send the message.
+ try:
+ server = smtplib.SMTP(HOST, PORT)
+ server.ehlo()
+ # most python runtimes default to a set of trusted public CAs that will include the CA used by OCI Email Delivery.
+ # However, on platforms lacking that default (or with an outdated set of CAs), customers may need to provide a capath that includes our public CA.
+ server.starttls(
+ context=ssl.create_default_context(
+ purpose=ssl.Purpose.SERVER_AUTH, cafile=None, capath=None
+ )
+ )
+ # smtplib docs recommend calling ehlo() before & after starttls()
+ server.ehlo()
+ server.login(USERNAME_SMTP, PASSWORD_SMTP)
+ # our requirement is that SENDER is the same as From address set previously
+ server.sendmail(SENDER, RECIPIENT, msg.as_string())
+ server.close()
+ # Display an error message if something goes wrong.
+ except Exception as e:
+ return e
+ else:
+ return True