def send_welcome_email(self): subject = 'Welcome to Rise' user = self.account.primary_user context = { 'user': user, 'user_profile': next(iter(UserProfile.objects.filter(user=user).select_related()), None), } send_html_email('emails/welcome_ach', context, subject, settings.DEFAULT_FROM_EMAIL, [user.email])
def handle(self, *args, **options): now = arrow.now().datetime lastweek = now - timedelta(days=7) flights = Flight.objects.filter(status=Flight.STATUS_COMPLETE,departure__gte=lastweek) flightreservationlist = FlightReservation.objects.filter(status=FlightReservation.STATUS_COMPLETE,flight=flights) passenger_list = Passenger.objects.filter(flight_reservation_id__in = flightreservationlist).values('email').distinct().all() context = { } subject = "Your Recent Rise Flight Experience" for email_obj in passenger_list: context['email'] = email_obj.get('email') send_html_email('emails/flight_feedback_email', context, subject, settings.DEFAULT_FROM_EMAIL, [email_obj.get('email')])
def send_rise_notification_email(self, error_message): """ Sends a notification of failed payment to Rise """ subject = 'Subscription Payment Failed' context = { 'error_message': error_message, 'account': self.account, } send_html_email('emails/admin_payment_failed_notification', context, subject, settings.DEFAULT_FROM_EMAIL, settings.PAYMENT_FAILED_NOTIFICATION_LIST)
def send_rise_notification_email(self): """ Sends a notification of failed payment to Rise """ subject = 'Payment Failed' context = { 'error_message': self.failure_message, 'account': self.account, } send_html_email('emails/admin_payment_failed_notification', context, subject, settings.DEFAULT_FROM_EMAIL, ['*****@*****.**'])
def handle(self, *args, **options): subject = options.get('subject') to_email = options.get('to') if options.get('litmus'): to_list = [to_email, '*****@*****.**'] else: to_list = [to_email] base_template = options.get('template') user = None try: UserModel = get_user_model() user = UserModel.objects.get(email=to_email) except: pass context = { 'site': Site.objects.get_current(), 'protocol': 'http', 'user': user, } json_template = '%s.json' % base_template try: context_json = json.loads(render_to_string(json_template)) context.update(context_json) except TemplateDoesNotExist: pass context_json = options.get('context') context_json = json.loads(context_json) context.update(context_json) backend = smtp.EmailBackend(host='smtp.mandrillapp.com', port=587, username='******', password='******') send_html_email(base_template, context, subject, settings.DEFAULT_FROM_EMAIL, to_list, fail_silently=False, connection=backend) print 'Email sent to %s' % ', '.join(to_list)
def send_html_email_task(base_template, context, subject, from_email, recipient_list, attachments=None, attachment_files=None, headers=None, connection=None, fail_silently=False, bcc=None): try: send_html_email(base_template, context, subject, from_email, recipient_list, attachments, attachment_files, headers, connection, fail_silently, bcc) except SMTPServerDisconnected as exc: raise send_html_email_task.retry(exc=exc)
def send_welcome_receipt_email(self): """ Send a receipt email for this charge If this charge has an invoice, send the receipt email from the invoice instead """ subject = 'Receipt for Your Payment to Rise, LLC.' user = self.account.primary_user context = { 'charge': self, 'user': user, 'user_profile': next(iter(UserProfile.objects.filter(user=user).select_related()), None), } send_html_email('emails/welcome_receipt', context, subject, settings.DEFAULT_FROM_EMAIL, [user.email])
def send_subscription_reminder(self): subject = 'Rise Statement Available' user = self.account.primary_user payment_method = None payment_account = self.account.get_default_payment() if payment_account is None: payment_method = 'account does not have a credit card or bank account associated with it. Please add a new credit card or bank account, and this card/account' elif isinstance(payment_account, BankAccount): payment_method = 'bank account %s ending with %s' % (payment_account.bank_name, payment_account.last4) else: payment_method = 'credit card ending with %s that expires on %s/%s' % (payment_account.last4, payment_account.exp_month, payment_account.exp_year) context = { 'subscription': self, 'payment_method': payment_method, 'user': user, } send_html_email('emails/subscription_reminder', context, subject, settings.DEFAULT_FROM_EMAIL, [user.email])
def send_payment_failed_email(self,payment_method_id=None): subject = 'Rise Payment Failed' user = self.account.primary_user payment_method = None if payment_method_id is not None: bill_pay_methd = BillingPaymentMethod.objects.filter(id=payment_method_id).first() if bill_pay_methd is not None and bill_pay_methd.payment_method == BillingPaymentMethod.PAYMENT_ACH: bank_account = BankAccount.objects.filter(billing_payment_method=bill_pay_methd).first() if bank_account: payment_method = 'bank account %s ending with %s' % (bank_account.bank_name, bank_account.last4) else: logger.exception('No bank account on file for subscription #%d.' % self.pk) elif bill_pay_methd is not None: card = Card.objects.filter(billing_payment_method=bill_pay_methd).first() if card: payment_method = 'credit card ending with %s that expires on %s/%s' % (card.last4, card.exp_month, card.exp_year) else: logger.exception('No credit card on file for subscription #%d.' % self.pk) else: logger.exception('No credit card on file for subscription #%d.' % self.pk) else: payment = self.account.get_default_payment() if payment is not None and isinstance(payment, BankAccount): if not payment.verified: payment_method = 'bank account %s ending with %s is not verified' % (payment.bank_name, payment.last4) else: payment_method = 'bank account %s ending with %s' % (payment.bank_name, payment.last4) elif payment is not None and isinstance(payment, Card): payment_method = 'credit card ending with %s that expires on %s/%s' % (payment.last4, payment.exp_month, payment.exp_year) else: logger.exception('No credit card on file for subscription #%d.' % self.pk) context = { 'payment_method': payment_method, 'user': user, } send_html_email('emails/payment_failed', context, subject, settings.DEFAULT_FROM_EMAIL, [user.email])
def save(self, *args, **kwargs): """ Generates a one-use only link for resetting password and sends to the user. """ email = self.cleaned_data['email'] users = User.objects.filter(email__iexact=email, is_active=True) for curr_user in users: # Make sure that no email is sent to a user that actually has # a password marked as unusable if not curr_user.has_usable_password(): continue context = { 'email': curr_user.email, 'uid': urlsafe_base64_encode(force_bytes(curr_user.pk)), 'user': curr_user, 'token': default_token_generator.make_token(curr_user), } subject = 'Rise Password Reset' send_html_email('emails/password_reset', context, subject, settings.DEFAULT_FROM_EMAIL, [curr_user.email])