def send_html_mail(subject, message, recipient_list, from_email, html_message, fail_silently=False, reply_to=None, bcc=None): msg_alternative = MIMEMultipart('alternative') msg_html = MIMEText(html_message, _subtype='html', _charset='utf-8') msg_text = MIMEText(message, _charset='utf-8') msg_alternative.attach(msg_text) msg_alternative.attach(msg_html) msg = EmailMessage(subject, '', from_email, recipient_list, reply_to=reply_to, bcc=bcc) msg.mixed_subtype = 'related' msg.attach(msg_alternative) if settings.SSO_EMAIL_LOGO: with open(settings.SSO_EMAIL_LOGO, 'rb') as f: email_image = MIMEImage(f.read()) email_image.add_header('Content-ID', '<{}>'.format("logo")) email_image.add_header("Content-Disposition", "inline", filename="logo") msg.attach(email_image) return msg.send(fail_silently=fail_silently)
def send_failure_mail(to_list, subject, message, req, user=None, sender=None, headers=None): ''' Function to send mail :param to_list: :param subject: :param message: :param sender: :param headers: :param design: ''' try: if not sender: sender = "Meisterdish<*****@*****.**>" if not headers: headers = { 'Reply-To': "Meisterdish<*****@*****.**>", 'From': "Meisterdish<*****@*****.**>", } source_ip = (get_client_ip(req) if get_client_ip(req) is not None else 'Not Available' ) usr = (user.full_name if user is not None else 'Not Applicable') dic = { 'error_reason': message, 'sub': subject, 'error_time': timezone.now(), 'error_ip': source_ip, 'user': usr, } log.info("data is " + str(dic)) log.info("User is : " + str(user)) message_html = render_to_string('failure_alert_email.html', dic) msg = EmailMessage( subject, message_html, sender, [to_list, ], headers=headers) log.info('Message Details :' + str(msg)) msg.content_subtype = "html" msg.mixed_subtype = 'related' log.info('Sending message') imgs = { "meisterdish_logo": os.path.join( settings.STATIC_ROOT, "default", "logo_email.png"), } for cid, img in imgs.items(): fp = open(img, 'rb') msg_image = MIMEImage(fp.read()) fp.close() msg_image.add_header('Content-ID', '<' + cid + '>') msg.attach(msg_image) return msg.send() except Exception as error: log.error("Failure Message failed due to: " + error.message)
def send_referel_mail(to_list, subject, message, sender=None, headers=None, design=True): ''' Function to send referral email :param to_list: :param subject: :param message: :param sender: :param headers: :param design: ''' if not sender: sender = "Meisterdish<*****@*****.**>" if not headers: headers = { 'Reply-To': "Meisterdish<*****@*****.**>", 'From': "Meisterdish<*****@*****.**>", } msg = EmailMessage(subject, message, sender, to_list, headers=headers) msg.content_subtype = "html" msg.mixed_subtype = 'related' share_images = { "meisterdish_logo": os.path.join( settings.STATIC_ROOT, "default", "logo_email.png"), "deliver": os.path.join( settings.STATIC_ROOT, "default", "deliver.png"), "recepies": os.path.join( settings.STATIC_ROOT, "default", "recepies.png"), "cook": os.path.join( settings.STATIC_ROOT, "default", "cook.png"), "fb": os.path.join( settings.STATIC_ROOT, "default", "fb_icon.png"), "instagram": os.path.join( settings.STATIC_ROOT, "default", "inst_icon.png"), "twitter": os.path.join( settings.STATIC_ROOT, "default", "tw_icon.png"), } if design: for cid, img in share_images.items(): fp = open(img, 'rb') msg_image = MIMEImage(fp.read()) fp.close() msg_image.add_header('Content-ID', '<' + cid + '>') msg.attach(msg_image) else: imgs = {"meisterdish_logo": os.path.join( settings.STATIC_ROOT, "default", "logo_email.png")} for cid, img in imgs.items(): fp = open(img, 'rb') msg_image = MIMEImage(fp.read()) fp.close() msg_image.add_header('Content-ID', '<' + cid + '>') msg.attach(msg_image) return msg.send()
def mail_order_confirmation( to_list, subject, message, order, sender="Meisterdish<*****@*****.**>", headers={ 'Reply-To': "Meisterdish<*****@*****.**>", 'From': "Meisterdish<*****@*****.**>", }): ''' Function to send order confirmation email :param to_list: :param subject: :param message: :param order: :param sender: :param headers: ''' try: msg = EmailMessage(subject, message, sender, to_list, headers=headers) msg.content_subtype = "html" msg.mixed_subtype = 'related' user = order.cart.user first_name = user.first_name.title( ) if user.role.id == settings.ROLE_USER else "Guest" if "Guest" not in first_name: share_images = { "share_fb": os.path.join( settings.STATIC_ROOT, "default", "share_fb.png"), "meisterdish_logo": os.path.join( settings.STATIC_ROOT, "default", "logo_email.png"), } else: share_images = { "meisterdish_logo": os.path.join( settings.STATIC_ROOT, "default", "logo_email.png"), } for ci in order.cart.cartitem_set.all(): share_images["img_" + str(ci.meal.id)] = ( ci.meal.main_image.image.path if ci.meal.main_image else os.path.join( settings.STATIC_ROOT, "default", "meal-default.jpg")) for cid, img in share_images.items(): fp = open(img, 'rb') msg_image = MIMEImage(fp.read()) fp.close() msg_image.add_header('Content-ID', '<' + cid + '>') msg.attach(msg_image) return msg.send() except KeyError as error: log.error(error.message) return False