diff options
author | Mahesh Gudi | 2017-06-06 02:06:40 -0700 |
---|---|---|
committer | GitHub | 2017-06-06 02:06:40 -0700 |
commit | 85c613d36ccee052a058aaaa6cd0db9502df354a (patch) | |
tree | 502a022b6048b9533790820a60f076a3ccc20626 /workshop_app/send_mails.py | |
parent | 96db76fb4ae924c5cf873673378cc7a44192c643 (diff) | |
parent | ead132b6b81941195a6ac8f87a2638e342929bf7 (diff) | |
download | workshop_booking-85c613d36ccee052a058aaaa6cd0db9502df354a.tar.gz workshop_booking-85c613d36ccee052a058aaaa6cd0db9502df354a.tar.bz2 workshop_booking-85c613d36ccee052a058aaaa6cd0db9502df354a.zip |
Merge pull request #4 from Akshen/testing
Fixes Email Attachment using django-email
Diffstat (limited to 'workshop_app/send_mails.py')
-rw-r--r-- | workshop_app/send_mails.py | 96 |
1 files changed, 57 insertions, 39 deletions
diff --git a/workshop_app/send_mails.py b/workshop_app/send_mails.py index a8ada76..a4e1e52 100644 --- a/workshop_app/send_mails.py +++ b/workshop_app/send_mails.py @@ -3,6 +3,7 @@ __author__ = "Akshen Doke" from django.core.mail import send_mail from textwrap import dedent from random import randint +from smtplib import SMTP import hashlib from django.utils.crypto import get_random_string from string import punctuation, digits @@ -16,8 +17,16 @@ from workshop_portal.settings import ( EMAIL_HOST_USER, EMAIL_HOST_PASSWORD, EMAIL_USE_TLS, - PRODUCTION_URL + PRODUCTION_URL, + SENDER_EMAIL ) +from django.core.mail import EmailMultiAlternatives +from django.conf import settings +from os import listdir, path +from email.mime.multipart import MIMEMultipart +from email.mime.text import MIMEText +from email.mime.base import MIMEBase +from email import encoders def generate_activation_key(username): """Generates hashed secret key for email activation""" @@ -34,12 +43,6 @@ def send_smtp_email(request=None, subject=None, message=None, Send email using SMTPLIB ''' - from smtplib import SMTP - from email.mime.multipart import MIMEMultipart - from email.mime.text import MIMEText - from email.mime.base import MIMEBase - from email import encoders - msg = MIMEMultipart() msg['From'] = EMAIL_HOST_USER msg['To'] = other_email @@ -101,7 +104,7 @@ def send_email( request, call_on, try: send_mail( "Instructor Registration - FOSSEE, IIT Bombay", message, - EMAIL_HOST_USER, [request.user.email], fail_silently=False + SENDER_EMAIL, [request.user.email], fail_silently=False ) except Exception: send_smtp_email(request=request, @@ -122,7 +125,7 @@ def send_email( request, call_on, try: send_mail("New Instructor Registration - FOSSEE, IIT Bombay", - message, EMAIL_HOST_USER, ['workshops@fossee.in'], + message, SENDER_EMAIL, ['workshops@fossee.in'], fail_silently=False) except Exception: send_smtp_email(request=request, @@ -147,7 +150,7 @@ def send_email( request, call_on, try: send_mail( - "Coordinator Registration at FOSSEE, IIT Bombay", message, EMAIL_HOST_USER, + "Coordinator Registration at FOSSEE, IIT Bombay", message, SENDER_EMAIL, [request.user.email], fail_silently=False ) except Exception: @@ -167,17 +170,18 @@ def send_email( request, call_on, Workshop title:{5} You may accept or reject this booking - workshop.fossee.in .""".format( + {6}/my_workshops/ .""".format( user_name, request.user.email, request.user.profile.phone_number, request.user.profile.institute, - workshop_date, workshop_title + workshop_date, workshop_title, + PRODUCTION_URL )) try: send_mail( "New FOSSEE Workshop booking on {0}".format(workshop_date), - message, EMAIL_HOST_USER, [other_email], + message, SENDER_EMAIL, [other_email], fail_silently=False ) except Exception: @@ -195,17 +199,17 @@ def send_email( request, call_on, Your request has been received and is awaiting instructor approval/disapproval. You will be notified about the status - via email and on your workshops.fossee.in + via email and on {2}/my_workshops/ In case of queries regarding workshop booking(s), revert to this email.""".format( - workshop_date, workshop_title + workshop_date, workshop_title, PRODUCTION_URL )) try: send_mail( "Pending Request for New FOSSEE Workshop booking on {0}" - .format(workshop_date), message, EMAIL_HOST_USER, + .format(workshop_date), message, SENDER_EMAIL, [request.user.email], fail_silently=False ) except Exception: @@ -229,11 +233,21 @@ def send_email( request, call_on, been sent to the coordinator. """.format(user_name, other_email, phone_number, institute, workshop_date, workshop_title)) - send_smtp_email(request=request, - subject="FOSSEE Workshop booking confirmation on {0}". - format(workshop_date), message=message, - other_email=request.user.email, attachment=1 - ) + + subject = "FOSSEE Workshop booking confirmation on {0}".\ + format(workshop_date) + msg = EmailMultiAlternatives(subject, message, SENDER_EMAIL, [request.user.email]) + + files = listdir(settings.MEDIA_ROOT) + for f in files: + attachment = open(path.join(settings.MEDIA_ROOT,f), 'rb') + part = MIMEBase('application', 'octet-stream') + part.set_payload((attachment).read()) + encoders.encode_base64(part) + part.add_header('Content-Disposition', "attachment; filename= %s " % f) + msg.attach(part) + msg.send() + else: message = dedent("""\ Instructor name:{0} @@ -251,11 +265,20 @@ def send_email( request, call_on, phone_number, workshop_date, workshop_title )) - send_smtp_email(request=request, - subject="FOSSEE Workshop booking confirmation on {0}". - format(workshop_date), message=message, - other_email=other_email, attachment=1 - ) + subject = "FOSSEE Workshop booking confirmation on {0}".\ + format(workshop_date) + msg = EmailMultiAlternatives(subject, message, SENDER_EMAIL, [request.user.email]) + + files = listdir(settings.MEDIA_ROOT) + for f in files: + attachment = open(path.join(settings.MEDIA_ROOT,f), 'rb') + part = MIMEBase('application', 'octet-stream') + part.set_payload((attachment).read()) + encoders.encode_base64(part) + part.add_header('Content-Disposition', "attachment; filename= %s " % f) + msg.attach(part) + msg.send() + elif call_on == "Booking Request Rejected": if user_position == "instructor": @@ -274,7 +297,7 @@ def send_email( request, call_on, try: send_mail("FOSSEE Workshop booking rejected for {0}" - .format(workshop_date), message, EMAIL_HOST_USER, + .format(workshop_date), message, SENDER_EMAIL, [request.user.email], fail_silently=False) except Exception: send_smtp_email(request=request, @@ -290,12 +313,12 @@ def send_email( request, call_on, We regret to inform you that your workshop booking has been rejected due to unavailability of the instructor. You may try booking other available - slots workshops.fossee.in """ - .format(workshop_date, workshop_title)) + slots {2}/book/ """ + .format(workshop_date, workshop_title, PRODUCTION_URL)) try: send_mail("FOSSEE Workshop booking rejected for {0}". - format(workshop_date), message, EMAIL_HOST_USER, + format(workshop_date), message, SENDER_EMAIL, [other_email], fail_silently=False) except Exception: send_smtp_email(request=request, @@ -313,7 +336,7 @@ def send_email( request, call_on, .format(workshop_date, workshop_title)) try: send_mail("FOSSEE workshop deleted for {0}".format(workshop_date), - message, EMAIL_HOST_USER, [request.user.email], + message, SENDER_EMAIL, [request.user.email], fail_silently=False) except Exception: send_smtp_email(request=request, @@ -324,11 +347,6 @@ def send_email( request, call_on, else: message = "Issue at Workshop Booking App please check" - try: - send_mail("Issue At Workshop Booking App Mailing", message, EMAIL_HOST_USER, - ['doke.akshen@gmail.com', 'mahesh.p.gudi@gmail.com', 'aditya94palaparthy@gmail.com'], fail_silently=False) - except Exception: - send_smtp_email(request=request, - subject="Issue at Workshop Booking App please check", - message=message, other_email='doke.akshen@gmail.com' - ) + send_mail("Issue At Workshop Booking App Mailing", message, SENDER_EMAIL, + ['your developer id'], fail_silently=False) + |