Example #1
0
def send_mail_worker(self, host, campaign, sector, campaign_log):
    # Build cache key to show progress
    cache_key = 'progress-campaign:{}'.format(campaign_log.id)
    body = campaign.html_mail.read()
    connection = get_connection()

    messages = []
    for email in sector.email_set.all():
        # Build message
        msg = EmailMultiAlternatives(
            subject=campaign.title,
            body='',
            from_email=u"{from_name} <{from_email}>".format(from_name=campaign.from_name,
                                                            from_email=campaign.from_email),
        )

        # Optional Mandrill-specific extensions:
        msg.tags = campaign.get_tags()
        msg.async = True
        msg.track_opens = True
        msg.track_clicks = True
        msg.to = [email.address]
        msg.attach_alternative(attach_remove_link(host, body, email), "text/html")
        messages.append(msg)

    # Send mass emails
    connection.send_messages(messages, cache_key)

    # Change status
    campaign_log.is_sent = True
    campaign_log.save()
    cache.delete(cache_key)
Example #2
0
 def mail_guest(self, subject, body):
     msg = EmailMultiAlternatives(subject, '', None, [self.email, ])
     msg.attach_alternative(body, "text/html")
     msg.track_opens = True
     msg.track_clicks = True
     msg.auto_text = True
     msg.send()
Example #3
0
def send_html_mail(subject, message, from_email, recipient_list, connection=None):
        msg = EmailMultiAlternatives(subject=subject, body=message, from_email=from_email,
                                     to=recipient_list, connection=connection)
        msg.attach_alternative(message, "text/html")
        msg.track_opens = True
        msg.track_clicks = True
        msg.auto_text = True
        msg.send()
Example #4
0
def send_email(subject,
               email,
               template,
               context,
               tags=list(),
               metadata=list(),
               request=None,
               reply_to=settings.DEFAULT_FROM_EMAIL,
               send_at=None):
    """
    Renders template blocks and sends an email.

    :param subject:
    :param email:
    :param template:
    :param context:
    :param tags:
    :param metadata:
    :param request:
    :param reply_to:
    :param send_at:
    :return:
    """
    context.update({
        'STATIC_URL': settings.STATIC_URL,
        'domain': settings.HOSTNAME
    })
    if request:
        context = RequestContext(request, context)

    template = get_template(template)
    html_content = template.render(Context(context))

    text_content = strip_tags(html_content)
    kwargs = dict(
        subject=subject,
        body=text_content.strip(),
        from_email=settings.DEFAULT_FROM_EMAIL,
        to=[email],
        reply_to=[reply_to],
    )
    message = EmailMultiAlternatives(**kwargs)
    message.attach_alternative(html_content, 'text/html')

    # Email tags
    message.tags = tags
    # Email metadata
    message.metadata = metadata

    # datetime.now(utc) + timedelta(hours=1)
    if send_at:
        message.send_at = send_at

    message. async = settings.EMAIL_ASYNC
    message.track_clicks = True
    message.track_opens = True

    message.send(fail_silently=True)
Example #5
0
 def send_email(self,
                subject=None,
                body=None,
                sg_template_on=False,
                sg_template=None,
                template=None,
                campaign=None):
     from anymail.message import AnymailMessage
     from django.core.mail import send_mail, EmailMultiAlternatives
     from django.utils.html import strip_tags
     if template is not None:
         try:
             html_content = render_to_string(
                 f"contact_management/{template}", self.__dict__)
         except:
             html_content = None
         note = template
     else:
         html_content = None
         note = body
     if html_content is not None:
         plain_content = strip_tags(html_content)
     else:
         plain_content = body
     message = EmailMultiAlternatives(subject, plain_content,
                                      DEFAULT_FROM_EMAIL, [self.email])
     if sg_template_on == True:
         message.template_id = sg_template
         template = sg_template
     message.metadata = {
         "account_id": self.account_name,
         "contact_id": self.id,
         "template": template,
         "campaign": campaign,
         "email_source": "VCM",
         "contact_type": "LEAD",
         "FIRST_NAME": self.first_name,
         "LAST_NAME": self.last_name,
         "ACCOUNT_NAME": self.account_name,
         'DATETIME': datetime.now().isoformat()
     }
     if html_content is not None:
         message.attach_alternative(html_content, "text/html")
     message.track_clicks = True
     message.track_opens = True
     try:
         message.send()
         status = message.anymail_status
         status.message_id
         n = Note(lead=self,
                  date=datetime.now(),
                  note=note,
                  follow_up_date=datetime.now() + timedelta(days=14),
                  contact_type='EMAIL')
         n.save()
         print(f"email sent to {self}")
     except:
         print('message did not send to', self)
Example #6
0
def send_htmlmail(from_email, to, cc=None, bcc=None, subject="", html_body=""):
    """
    Send HTML and plain text mail
    """
    text_plain = strip_tags(html_body)
    logger.info(f'>>>> send_htmlmail  {subject} to {to}')
    msg = EmailMultiAlternatives(from_email=from_email,
                                 to=[to],
                                 cc=cc,
                                 bcc=bcc,
                                 subject=subject,
                                 body=text_plain)
    # AnyMail attributes
    msg.track_opens = True
    msg.track_clicks = True
    msg.attach_alternative(html_body, "text/html")
    msg.send()
Example #7
0
    def send_email(self,
                   subject=None,
                   body=None,
                   sg_template_on=False,
                   sg_template=None,
                   template=None,
                   campaign=None):
        from anymail.message import AnymailMessage
        from django.core.mail import send_mail, EmailMultiAlternatives
        from django.utils.html import strip_tags
        if template is not None:
            try:
                html_content = render_to_string(
                    f"contact_management/{template}", self.__dict__)
            except:
                html_content = None
            note = template
        else:
            html_content = None
            note = body
        if html_content is not None:
            plain_content = strip_tags(html_content)
        else:
            plain_content = body

        message = EmailMultiAlternatives(subject, plain_content,
                                         DEFAULT_FROM_EMAIL, [self.email])

        if sg_template_on == True:
            message.template_id = sg_template
            template = sg_template
            note = f"SENDGRID TEMPLATE {sg_template}"

        message.metadata = {
            "account_id": self.account.id,
            "contact_id": self.id,
            "template": template,
            "campaign": campaign,
            "email_source": "VCM",
            "contact_type": "CONTACT",
            "FIRST_NAME": self.first_name,
            "LAST_NAME": self.last_name,
            "ACCOUNT_NAME": self.account.name,
            'DATETIME': datetime.now().isoformat(),
        }

        if html_content is not None:
            message.attach_alternative(html_content, "text/html")
        message.track_clicks = True
        message.track_opens = True
        try:
            print('we are here')
            print(template)
            message.send()
            print('we just sent??')
            status = message.anymail_status
            status.message_id
            print(status.message_id, 'MID!!')

            n = Note(contact=self,
                     date=datetime.now(),
                     note=note,
                     follow_up_date=datetime.now() + timedelta(days=14),
                     contact_type='EMAIL')
            print(n, 'NOTE')
            n.save()
            print(n.follow_up_date, 'NOTE SAVED')
        except Exception as errors:
            print(errors, 'this is the erro!')
            print('message did not send to', self)