Beispiel #1
0
def send_mandrill_template_mail(template_name,
                                to,
                                global_merge_vars=None,
                                merge_vars=None,
                                content_blocks=None,
                                subject=None,
                                from_email=None,
                                **options):
    if isinstance(to, six.string_types):
        to = [to]
    msg = EmailMessage(subject=subject, from_email=from_email, to=to)
    msg.template_name = template_name
    if content_blocks:
        msg.template_content = content_blocks
    if global_merge_vars:
        msg.global_merge_vars = global_merge_vars
    if merge_vars:
        msg.merge_vars = merge_vars
    for option, value in six.iteritems(options):
        if option not in VALID_DJRILL_OPTIONS:
            raise ValueError('Invalid option for Mandrill template: %s' %
                             option)
        setattr(msg, option, value)
    if not subject:
        msg.use_template_subject = True
    if not from_email:
        msg.use_template_from = True
    msg.send()
Beispiel #2
0
    def _send_reminder(self, subject, from_email, template_name, voucher=None):
        try:
            to_email = self.customer.user.email
            msg = EmailMessage(
                subject=subject,
                to=[to_email],
                from_email=from_email,
            )
            msg.template_name = template_name
            msg.merge_vars = {
                to_email: self._get_merge_vars(voucher),
            }
            msg.send()
        except MandrillRecipientsRefused:
            logger.error('Send shopping cart reminder to %s',
                         to_email,
                         exc_info=True)
        except Exception:
            logger.error('Send shopping cart reminder to %s',
                         to_email,
                         exc_info=True)
            return False

        logger.debug('Shopping cart reminder for {} sent successfully!'.format(
            to_email))
        return True
Beispiel #3
0
    def post(self, request, *args, **kwargs):
        form_contact = self.form_class(request.POST)
        success = False
        if form_contact.is_valid():
            date = datetime.today()
            form_contact.save()
            success = True

            from django.core.mail import EmailMessage
            msg = EmailMessage(subject="R | Contact",
                               from_email=settings.DEFAULT_FROM_EMAIL,
                               to=[settings.DEFAULT_TO_EMAIL])
            msg.template_name = "rmp_contact"  # A Mandrill template name
            msg.template_content = {  # Content blocks to fill in
                'TRACKING_BLOCK': "<a href='.../*|TRACKINGNO|*'>track it</a>"
            }

            msg.global_merge_vars = {  # Merge tags in your template
                'SITE_URL': settings.SITE_URL,
                'STATIC_URL': settings.STATIC_URL,
                'TXT_NAME': request.POST['name'],
                'TXT_EMAIL': request.POST['email'],
                'TXT_MESSAGE': request.POST['message'],
                'TXT_YEAR': date.year
            }
            msg.merge_vars = {                              # Per-recipient merge tags
                'a@.': {'NAME': "Pat"},
            }
            msg.send()

        return render(request, self.template_name, {
            'form_contact': form_contact,
            'success': success
        })
def send_mandrill_template_mail(
    template_name,
    to,
    global_merge_vars=None,
    merge_vars=None,
    content_blocks=None,
    subject=None,
    from_email=None,
    **options
):
    if isinstance(to, six.string_types):
        to = [to]
    msg = EmailMessage(subject=subject, from_email=from_email, to=to)
    msg.template_name = template_name
    if content_blocks:
        msg.template_content = content_blocks
    if global_merge_vars:
        msg.global_merge_vars = global_merge_vars
    if merge_vars:
        msg.merge_vars = merge_vars
    for option, value in six.iteritems(options):
        if option not in VALID_DJRILL_OPTIONS:
            raise ValueError("Invalid option for Mandrill template: %s" % option)
        setattr(msg, option, value)
    if not subject:
        msg.use_template_subject = True
    if not from_email:
        msg.use_template_from = True
    msg.send()
Beispiel #5
0
def _send_reminder(reminder):
    try:
        to_email = reminder.email
        msg = EmailMessage(
            subject=reminder.subject,
            to=[to_email],
            from_email=reminder.from_email,
        )
        msg.template_name = reminder.template_name
        msg.merge_vars = {
            to_email: reminder.get_vars(),
        }
        msg.send()
    except MandrillRecipientsRefused:
        logger.error('Send reminder to %s', to_email, exc_info=True)
    except Exception:
        logger.error('Send reminder to %s', to_email, exc_info=True)
        return
    reminder.completed = True
    reminder.save()
    logger.debug('Reminder [%d] for <%s> sent successfully!' %
                 (reminder.id, to_email))

    if reminder.template_name in REACTIVATION_TEMPLATES:
        try:
            gs_response = GetStartedResponse.objects.filter(
                email=to_email).latest("created")
            sent_emails = json.loads(gs_response.sent_emails)
            sent_emails.append(reminder.template_name)
            gs_response.sent_emails = json.dumps(sent_emails)
            gs_response.save()
        except (GetStartedResponse.DoesNotExist, Exception):
            logger.error('Updating gs_response for email: %s',
                         to_email,
                         exc_info=True)
Beispiel #6
0
def invite(request):
    #template = "tclassroom/invite_join_course"
    message = request.POST['message']
    userid = request.user.id
    username = request.user.username
    parsed_mails = request.POST['list'].split('#')
    emails = []
    me = User.objects.get(id=userid)
    email = me.email
    already = CollaboratorInvitation.objects.filter(fromuser=me, accepted=False)
    if (already.count () > 10):
        return dump_and_render_json(request, dict({'status' : 'error', 'code' : 'limited exceeded'}))
    tolist = []
    for item in parsed_mails :
        append = True
        if (item == email):
            continue
        for sent in already :
            if (sent.usermail == item) :
                append = False
                break
        if append :
            tolist.append(item)
            emails.append(CollaboratorInvitation (usermail=item, fromuser=me))
    
    if len(emails) == 0 :
        return dump_and_render_json(request, dict({'status' : 'error', 'code' : 'limited exceeded'}))
    #subject = render_to_string('teacher_invitation_subject.txt'.format(template))
    mandrillappmessage = EmailMessage(subject=username + " Invitation!", to=tolist, from_email=settings.EMAIL_NO_REPLY)
    mandrillappmessage.template_name = "TEACHER_COLLABORATION_INVITATION"
    mandrillappmessage.global_merge_vars = {                       # Merge tags in your template
                             'ACTIVATE': " show invitation", 'MESSAGE': message
    }
    merge_vars = {}
    CollaboratorInvitation.objects.bulk_create(emails)
    time_threshold = datetime.now() - timedelta(seconds=3)
    invitations = CollaboratorInvitation.objects.filter(sent_at__gt=time_threshold, fromuser=me)
    value = {}
    for invitation in invitations :
        value = model_to_dict(invitation, fields = ['usermail'])
        url = request.build_absolute_uri (reverse("teacher_invitation_response", args=[invitation.id]))
        value.update ({ 'URL' : url})
        merge_vars[invitation.usermail] = value
    
    mandrillappmessage.merge_vars = merge_vars
    """
    message.merge_vars = {
    '*****@*****.**': {'offer': "15% off anvils"},
    '*****@*****.**':    {'offer': "instant tunnel paint"}
    }
    msg = EmailMultiAlternatives(subject, "body", settings.EMAIL_NO_REPLY, bcc=emails)                                      
    msg.attach_alternative(body, "text/html")                                                                                                                                                                               
    response_ = msg.send()
    """
    try :
        mandrillappmessage.send()
        return render_json(request, mandrillappmessage.mandrill_response)
    except djrill.MandrillAPIError as ex:
        return render_json(request, mandrillappmessage.mandrill_response)
Beispiel #7
0
 def render_djrill_mail(self, template, email, ctx):
     """
     Renders an e-mail using mandrill template.
     """
     msg = EmailMessage(from_email=settings.DEFAULT_FROM_EMAIL, to=[email])
     msg.template_name = template
     msg.merge_vars = {email: ctx}
     msg.use_template_subject = True
     msg.use_template_from = True
     return msg
Beispiel #8
0
def send_emails_rewards(request, day):
    try:
        db_helper = Helper.objects.latest('id')
        print len(Helper.objects.all())
    except Exception as e:
        print e
        db_helper = Helper(emails_rewards_sent=False)
        db_helper.save()

    print 'Sent?', db_helper

    if day == 4:
        print 'Today is Thursday!'

        if not db_helper.emails_rewards_sent:

            db_helper.emails_rewards_sent_count = 0
            db_helper.save()

            for cus in Customer.objects.all():
                print 'Send rewards to ', cus

                try:
                    msg = EmailMessage(
                        subject='When you get Hooked, it only gets better.',
                        to=[cus.user.email],
                        from_email='Your Hook Rewards <*****@*****.**>'
                    )
                    msg.template_name = 'Hook Rewards Programme 2nd update!'
                    msg.merge_vars = {
                        cus.user.email: {
                            'USERNAME': cus.first_name,
                            'POINTS': cus.amount,
                        },
                    }
                    msg.send()

                    logger.debug('REWARDS: Mailchimp template: {}, email_to: {}'.format(msg.template_name, cus.user.email))

                    db_helper.emails_rewards_sent_count += 1
                    db_helper.save()
                except:
                    pass

            # set SENT to True
            db_helper.emails_rewards_sent = True
            db_helper.save()
            print 'Set Sent to True', db_helper

    else:
        # set SENT to False
        db_helper.emails_rewards_sent = False
        db_helper.emails_rewards_sent_count = 0
        db_helper.save()
        print 'Set Sent to False', db_helper
Beispiel #9
0
def send_email_from_template(to_profile, template_name, global_merge_vars=None, merge_vars=None, from_name=None, from_email=None, subject=None, sent_before_control=False):

    log_type = template_name

    if sent_before_control:
        if mail_is_sent_before(to_profile, log_type):
            return False

    if to_profile.mail_subscription is False:
        return False

    msg = EmailMessage(
        to=[to_profile.email, ]
    )

    msg.template_name = template_name

    if not global_merge_vars:
        global_merge_vars = {}

    msg.global_merge_vars = global_merge_vars

    if merge_vars:
        msg.merge_vars = merge_vars

    msg.subject = subject

    if not from_email:
        from_email = settings.MAILING_FROM_EMAIL

    if not from_name:
        from_name = settings.MAILING_FROM_NAME

    msg.from_email = from_email
    msg.from_name = from_name

    msg.send()

    mandrill_id, mandrill_status = "-1", "unknown"
    try:
        if msg.mandrill_response and len(msg.mandrill_response):
            mandrill_id, mandrill_status = msg.mandrill_response[0].get("_id"), msg.mandrill_response[0].get("status")
    except Exception as error:
        pass

    mail_log = MailLog(
        to=to_profile,
        type=log_type,
        mandrill_response_id=mandrill_id,
        mandrill_status=mandrill_status,
    )

    mail_log.save()
Beispiel #10
0
    def _setup_message(self):
        msg = EmailMessage(subject=self.subject,
                           from_email=settings.DEFAULT_FROM_EMAIL,
                           to=self.to)
        if self.template:
            msg.template_name = self.template["name"]
            msg.global_merge_vars = self.template["global_merge_vars"]
            msg.merge_vars = self.template.get("merge_vars", {})
            msg.merge_language = self.template.get("merge_language",
                                                   "mailchimp")

        return msg
Beispiel #11
0
def send_mail(to, template_name, subject=None, from_email=None,
              local_vars=None, global_vars=None):
    subject = subject or EMAIL_SUBJECTS[template_name]
    from_email = from_email or settings.DEFAULT_FROM_EMAIL
    local_vars = local_vars or {}
    global_vars = global_vars or {}

    msg = EmailMessage(from_email=from_email, to=to, subject=subject)
    msg.template_name = template_name
    msg.merge_vars = local_vars
    msg.global_merge_vars = global_vars

    return msg.send()
Beispiel #12
0
    def _send_message(self, subject, from_email, to, heading, content):

        msg = EmailMessage(subject=subject, from_email=from_email, to=to)
        msg.template_name = "BASIC"           # A Mandrill template name
        msg.template_content = {                        # Content blocks to fill in
            'HEADING': heading,
            'CONTENT': content
        }
        msg.global_merge_vars = {                       # Merge tags in your template
            'HEADING': heading,
            'CONTENT': content
        }
        msg.merge_vars = {}
        msg.send()
Beispiel #13
0
def send_initial_password_mail(user, password):
    """
    task sending out email with new passwword via mandrill
    """

    msg = EmailMessage(
        subject=_('Welcome to Das Aktienregister - Your new password'),
        from_email="*****@*****.**",
        to=[user.email])
    msg.template_name = "DARG_WELCOME_PASSWORD"
    msg.template_content = {}
    msg.global_merge_vars = {
        'NEW_PASSWORD': password,
    }
    msg.merge_vars = {}
    msg.send()
Beispiel #14
0
def switch_coffee(request):
    """ Switch users to another coffee """

    coffee_from = request.POST.get('coffee-from')
    coffee_to = request.POST.get('coffee-to')
    if coffee_from and coffee_to:
        old_coffee = CoffeeType.objects.get(id=coffee_from)
        goal_coffee = CoffeeType.objects.get(id=coffee_to)
        if goal_coffee:

            # Change coffee in upcoming orders
            orders_to_change = Order.objects.filter(coffee=coffee_from)\
                .filter(status__in=['AC', 'PA', 'ER', 'DE'])
            for o in orders_to_change:
                o.coffee = goal_coffee
                o.save()

            # Change coffee in user Preferences
            preferences_to_change = Preferences.objects.filter(
                coffee=coffee_from)
            for p in preferences_to_change:
                p.coffee = goal_coffee
                p.save()

            # Send emails to notify user theis coffee has been changed
            for o in orders_to_change:
                goal_email = o.customer.user.email

                msg = EmailMessage(
                    subject=
                    "We hope you don't mind, we'll be sending you something different!",
                    to=[goal_email],
                    from_email='Hook Coffee <*****@*****.**>')
                msg.template_name = 'Running out of Coffee'
                msg.merge_vars = {
                    goal_email: {
                        'USERNAME': o.customer.first_name,
                        'OLD_COFFEE': '%s' % old_coffee,
                        'NEW_COFFEE': '%s' % goal_coffee,
                        'DOMAIN_NAME': request.META['HTTP_HOST']
                    },
                }
                msg.send()

                logger.debug(
                    'SWITCH COFFEE: Mailchimp template: {}, email_to: {}'.
                    format(msg.template_name, goal_email))
Beispiel #15
0
    def form_valid(self, form):
        # This method is called when valid form data has been POSTed.
        # It should return an HttpResponse

        subject='New Member Application Received'
        message= ("A new request for membership has been posted through l'Union Alsacienne Website." + "\r\n\n" +
                "Name: " + form.cleaned_data['first_name'] + " " + form.cleaned_data['last_name'] + "\r\n" +
                "Address: " + form.cleaned_data['address'] + "\n" +
                form.cleaned_data['city'] + "   " + form.cleaned_data['zip'] + "   " + form.cleaned_data['state'] + "\r\n\n" +
                "Occupation: " + form.cleaned_data['occupation'] + "\n" + " at " + form.cleaned_data['company'] + "\r\n\n" +
                "Mobile phone: " + form.cleaned_data['mobile_phone'] + "\n" + " Home phone: " + form.cleaned_data['home_phone'] + "\n" +
                " Fax: " + form.cleaned_data['home_fax'] + "\r\n\n" +
                "E-mail: " + form.cleaned_data['email'] + "\r\n\n" + "Date of birth: " + str(form.cleaned_data['date_of_birth']) + "\n" +
                "Place: " + form.cleaned_data['birth_place'] + "\n" +
                "If not from Alsace: " + form.cleaned_data['if_not_alsace_Reason'] + "\r\n\n" +
                "Venue: " + form.cleaned_data['venue'] + "\n" + "Date: " + str(form.cleaned_data['date_membership_application']) + "\n" +
                " Signature: " + form.cleaned_data['signature'] + "\r\n\n" +
                "First sponsor: " + form.cleaned_data['first_sponsor'] + "\n" +
                "Second sponsor: " + form.cleaned_data['second_sponsor'] + "\r\n\n" + "Posted through l'Union Alsacienne Website"+ "\r\n")
        sender='*****@*****.**'
        recipient=['*****@*****.**','*****@*****.**','*****@*****.**']

        email=EmailMessage(subject,message,sender,recipient)
        email.send()
        #send_mail(subject,message,sender,recipient,fail_silently=False)

        msg = EmailMessage(subject="Thank you for your application", from_email="*****@*****.**",
                   to=[form.cleaned_data['email']])
        msg.template_name = "Membership_Confirmation_MC2" # A Mandrill template name

        msg.global_merge_vars = {                       # Merge tags in your template
                'CURRENT_YEAR': str(datetime.date.today().year),
                'COMPANY': 'Union Alsacienne of New York'
            }

        msg.merge_vars = {                              # Per-recipient merge tags
               form.cleaned_data['email'] :  {'first_name': form.cleaned_data['first_name'],'state' : form.cleaned_data['state'],'zip' : form.cleaned_data['zip'],'city' : form.cleaned_data['city'],'address' : form.cleaned_data['address'],'last_name': form.cleaned_data['last_name'],},
            }

        msg.send()

        form.save(True)

        return HttpResponseRedirect('/membership/payment?type=1') #redirect after post
Beispiel #16
0
def send_email_async(self,
                     subject,
                     template,
                     to_email,
                     from_email=DEFAULT_FROM_EMAIL,
                     merge_vars=None,
                     metadata=None,
                     attachments=None):

    msg = EmailMessage(
        subject=subject,
        to=[to_email],
        from_email=from_email,
    )
    msg.template_name = template
    msg.merge_vars = {to_email: {'USERNAME': '******'}}

    if not merge_vars:
        merge_vars = {}

    merge_vars.setdefault('DOMAIN_NAME', 'hookcoffee.com.sg')
    msg.merge_vars[to_email].update(merge_vars)

    if metadata:
        msg.metadata = metadata

    if attachments:
        for attach in attachments:
            filename, filepath, mimetype = attach
            content = open(filepath, 'rb').read()
            msg.attach(filename, content, mimetype)

    try:
        msg.send()
    except Exception as e:
        logger.error('Send email:error tpl: %s, to: %s',
                     template,
                     to_email,
                     exc_info=True)
        raise self.retry(exc=e, countdown=1 * 60)  # retry in a minute
    else:
        logger.debug('Send email:success tpl: %s, to: %s' %
                     (msg.template_name, to_email))
Beispiel #17
0
    def form_valid(self, form):
        # This method is called when valid form data has been POSTed.
        # It should return an HttpResponse

        subject='New Friendship Application Received'
        message=("A new request to become a friend has been posted through l'Union Alsacienne Website"+ "\n\n" +
                 "Name: " + form.cleaned_data['first_name'] + " " + form.cleaned_data['last_name'] +"\n\n" +
                 "Email: " + form.cleaned_data['email'] + "\n\n" +
                 "Address: " + form.cleaned_data['address'] + "\n" +
                     form.cleaned_data['city'] + "   " + form.cleaned_data['zip'] + "   " + form.cleaned_data['state'] + "\r\n\n" +
                "Posted through l'Union Alsacienne Website"+ "\r\n")
        sender='*****@*****.**'
        recipient=['*****@*****.**','*****@*****.**','*****@*****.**']

        email=EmailMessage(subject,message,sender,recipient)
        email.send()

        #send_mail(subject,message,sender,recipient,fail_silently=False)


        msg = EmailMessage(subject="Thank you for your application", from_email="*****@*****.**",
              to=[form.cleaned_data['email']])
        msg.template_name = "Friendship_Confirmation_MC2"           # A Mandrill template name

        msg.global_merge_vars = {                       # Merge tags in your template
             'CURRENT_YEAR': str(datetime.date.today().year), 'COMPANY': 'Union Alsacienne of New York'
        }
        msg.merge_vars = {                              # Per-recipient merge tags
           form.cleaned_data['email'] :  {'first_name': form.cleaned_data['first_name'],'state' : form.cleaned_data['state'],'zip' : form.cleaned_data['zip'],'city' : form.cleaned_data['city'],'address' : form.cleaned_data['address'],'last_name': form.cleaned_data['last_name'],},
        }

        msg.send()

        form.save(True)

        return HttpResponseRedirect('/membership/payment?type=2')
Beispiel #18
0
def invite(request):
    #template = "tclassroom/invite_join_course"
    message = request.POST['message']
    userid = request.user.id
    username = request.user.username
    parsed_mails = request.POST['list'].split('#')
    emails = []
    me = User.objects.get(id=userid)
    email = me.email
    already = CollaboratorInvitation.objects.filter(fromuser=me,
                                                    accepted=False)
    if (already.count() > 10):
        return dump_and_render_json(
            request, dict({
                'status': 'error',
                'code': 'limited exceeded'
            }))
    tolist = []
    for item in parsed_mails:
        append = True
        if (item == email):
            continue
        for sent in already:
            if (sent.usermail == item):
                append = False
                break
        if append:
            tolist.append(item)
            emails.append(CollaboratorInvitation(usermail=item, fromuser=me))

    if len(emails) == 0:
        return dump_and_render_json(
            request, dict({
                'status': 'error',
                'code': 'limited exceeded'
            }))
    #subject = render_to_string('teacher_invitation_subject.txt'.format(template))
    mandrillappmessage = EmailMessage(subject=username + " Invitation!",
                                      to=tolist,
                                      from_email=settings.EMAIL_NO_REPLY)
    mandrillappmessage.template_name = "TEACHER_COLLABORATION_INVITATION"
    mandrillappmessage.global_merge_vars = {  # Merge tags in your template
        'ACTIVATE': " show invitation",
        'MESSAGE': message
    }
    merge_vars = {}
    CollaboratorInvitation.objects.bulk_create(emails)
    time_threshold = datetime.now() - timedelta(seconds=3)
    invitations = CollaboratorInvitation.objects.filter(
        sent_at__gt=time_threshold, fromuser=me)
    value = {}
    for invitation in invitations:
        value = model_to_dict(invitation, fields=['usermail'])
        url = request.build_absolute_uri(
            reverse("teacher_invitation_response", args=[invitation.id]))
        value.update({'URL': url})
        merge_vars[invitation.usermail] = value

    mandrillappmessage.merge_vars = merge_vars
    """
    message.merge_vars = {
    '*****@*****.**': {'offer': "15% off anvils"},
    '*****@*****.**':    {'offer': "instant tunnel paint"}
    }
    msg = EmailMultiAlternatives(subject, "body", settings.EMAIL_NO_REPLY, bcc=emails)                                      
    msg.attach_alternative(body, "text/html")                                                                                                                                                                               
    response_ = msg.send()
    """
    try:
        mandrillappmessage.send()
        return render_json(request, mandrillappmessage.mandrill_response)
    except djrill.MandrillAPIError as ex:
        return render_json(request, mandrillappmessage.mandrill_response)