Пример #1
0
Файл: email.py Проект: g10f/sso
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)
Пример #2
0
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)
Пример #3
0
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()
Пример #4
0
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