def send_register_user_mail(request, user, preset_password=False, password=None): current_site = get_current_site(request) context = { 'site_name': current_site.name, 'absolute_base_uri': request.build_absolute_uri('/'), 'email': user.email, 'password': password, 'preset_password': preset_password, 'user': user, 'activation_key': user.customer.activation.activation_key } subject_template = select_template([ '{}/email/register-user-subject.txt'.format(app_settings.APP_LABEL), 'shop/email/register-user-subject.txt', ]) # Email subject *must not* contain newlines subject = ''.join(subject_template.render(context).splitlines()) body_text_template = select_template([ '{}/email/register-user-body.txt'.format(app_settings.APP_LABEL), 'shop/email/register-user-body.txt', ]) body_html_template = select_template([ '{}/email/register-user-body.html'.format(app_settings.APP_LABEL), 'shop/email/register-user-body.html', ], using='post_office') message = body_text_template.render(context) html_message = body_html_template.render(context) mail.send( user.email, settings.WELTLADEN_EMAIL_ADDRESS, subject=subject, message=message, html_message=html_message ) email_queued()
def _send_password(self, request, user, password): current_site = get_current_site(request) context = { 'site_name': current_site.name, 'absolute_base_uri': request.build_absolute_uri('/'), 'email': user.email, 'password': password, 'user': user, } subject_template = select_template([ '{}/email/register-user-subject.txt'.format(app_settings.APP_LABEL), 'shop/email/register-user-subject.txt', ]) # Email subject *must not* contain newlines subject = ''.join(subject_template.render(context).splitlines()) body_text_template = select_template([ '{}/email/register-user-body.txt'.format(app_settings.APP_LABEL), 'shop/email/register-user-body.txt', ]) body_html_template = select_template([ '{}/email/register-user-body.html'.format(app_settings.APP_LABEL), 'shop/email/register-user-body.html', ], using='post_office') message = body_text_template.render(context) html_message = body_html_template.render(context) from_email = getattr(settings, 'DEFAULT_FROM_EMAIL') user.email_user(subject, message, from_email=from_email, html_message=html_message) email_queued()
def order_event_notification(sender, instance=None, target=None, **kwargs): from shop.serializers.order import OrderDetailSerializer if not isinstance(instance, BaseOrder): return for notification in Notification.objects.filter(transition_target=target): recipient = notification.get_recipient(instance) if recipient is None: continue # emulate a request object which behaves similar to that one, when the customer submitted its order emulated_request = EmulateHttpRequest(instance.customer, instance.stored_request) customer_serializer = app_settings.CUSTOMER_SERIALIZER(instance.customer) order_serializer = OrderDetailSerializer(instance, context={'request': emulated_request}) language = instance.stored_request.get('language') context = { 'customer': customer_serializer.data, 'data': order_serializer.data, 'ABSOLUTE_BASE_URI': emulated_request.build_absolute_uri().rstrip('/'), 'render_language': language, } try: template = notification.mail_template.translated_templates.get(language=language) except EmailTemplate.DoesNotExist: template = notification.mail_template attachments = {} for notiatt in notification.notificationattachment_set.all(): attachments[notiatt.attachment.original_filename] = notiatt.attachment.file.file mail.send(recipient, template=template, context=context, attachments=attachments, render_on_delivery=True) email_queued()
def send_mail(self, subject_template_name, email_template_name, context, from_email, to_email, html_email_template_name=None): try: email_template = EmailTemplate.objects.get( name='password-reset-inform') except EmailTemplate.DoesNotExist: subject = render_to_string(subject_template_name, context) # Email subject *must not* contain newlines subject = ''.join(subject.splitlines()) body = render_to_string(email_template_name, context) email_message = EmailMultiAlternatives(subject, body, from_email, [to_email]) if html_email_template_name: template = get_template(html_email_template_name, using='post_office') html = template.render(context) email_message.attach_alternative(html, 'text/html') template.attach_related(email_message) email_message.send() else: context['user'] = str(context['user']) context['uid'] = context['uid'].decode('utf-8') post_office_mail.send(to_email, template=email_template, context=context, render_on_delivery=True) email_queued()
def save(self, request=None): ''' send mail and so ''' email = self.cleaned_data['email'] subject = self.cleaned_data['subject'] body = self.cleaned_data['body'] mail.send(settings.WELTLADEN_EMAIL_ADDRESS, email, subject=subject, message=body) email_queued()
def transition_change_notification(order): """ This function shall be called, after an Order object performed a transition change. """ if not isinstance(order, BaseOrder): raise TypeError("Object order must inherit from class BaseOrder") emails_in_queue = False for notification in Notification.objects.filter( transition_target=order.status): recipient = notification.get_recipient(order) if recipient is None: continue # emulate a request object which behaves similar to that one, when the customer submitted its order emulated_request = EmulateHttpRequest(order.customer, order.stored_request) customer_serializer = app_settings.CUSTOMER_SERIALIZER(order.customer) render_context = {'request': emulated_request, 'render_label': 'email'} order_serializer = OrderDetailSerializer(order, context=render_context) language = order.stored_request.get('language') context = { 'customer': customer_serializer.data, 'order': order_serializer.data, 'ABSOLUTE_BASE_URI': emulated_request.build_absolute_uri().rstrip('/'), 'render_language': language, } try: latest_delivery = order.delivery_set.latest() context['latest_delivery'] = DeliverySerializer( latest_delivery, context=render_context).data except (AttributeError, models.ObjectDoesNotExist): pass try: template = notification.mail_template.translated_templates.get( language=language) except EmailTemplate.DoesNotExist: template = notification.mail_template attachments = {} for notiatt in notification.notificationattachment_set.all(): attachments[notiatt.attachment. original_filename] = notiatt.attachment.file.file mail.send(recipient, template=template, context=context, attachments=attachments, render_on_delivery=True) emails_in_queue = True if emails_in_queue: email_queued()
def post(self, request, *args, **kwargs): form_data = request.data.get('form_data', {}) serializer = self.get_serializer(data=form_data) if not serializer.is_valid(): return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) serializer.save() # trigger async email queue email_queued() # Return the success message with OK HTTP status msg = _("Instructions on how to reset the password have been sent to '{email}'.") response_data = {'reset_form': { 'success_message': msg.format(**serializer.data), }} return Response(response_data)
def post(self, request, *args, **kwargs): form_data = request.data.get('form_data', {}) serializer = self.get_serializer(data=form_data) if not serializer.is_valid(): return Response({self.form_name: serializer.errors}, status=status.HTTP_422_UNPROCESSABLE_ENTITY) # send email containing a reset link serializer.save() # trigger async email queue email_queued() # Return the success message with OK HTTP status msg = _("Instructions on how to reset the password have been sent to '{email}'.") response_data = {self.form_name: { 'success_message': msg.format(**serializer.data), }} return Response(response_data)
def send_activate_user_mail(request, email): context = { 'absolute_base_uri': request.build_absolute_uri('/'), 'email': email } subject = 'Weltladen Baden: Aktivierung Ihre Accounts erfolgreich' body_html_template = select_template([ '{}/email/activate-user-body.html'.format(app_settings.APP_LABEL), 'shop/email/activate-user-body.html', ], using='post_office') html_message = body_html_template.render(context) mail.send( email, settings.WELTLADEN_EMAIL_ADDRESS, subject=subject, html_message=html_message ) email_queued()
def send_mail(self, subject_template_name, email_template_name, context, from_email, to_email, html_email_template_name=None): try: email_template = EmailTemplate.objects.get(name='password-reset-inform') except EmailTemplate.DoesNotExist: subject = render_to_string(subject_template_name, context) # Email subject *must not* contain newlines subject = ''.join(subject.splitlines()) body = render_to_string(email_template_name, context) email_message = EmailMultiAlternatives(subject, body, from_email, [to_email]) if html_email_template_name: template = get_template(html_email_template_name, using='post_office') html = template.render(context) email_message.attach_alternative(html, 'text/html') template.attach_related(email_message) email_message.send() else: context['user'] = str(context['user']) context['uid'] = context['uid'].decode('utf-8') post_office_mail.send(to_email, template=email_template, context=context, render_on_delivery=True) email_queued()
def post(self, request, *args, **kwargs): form_data = request.data.get('form_data', {}) serializer = self.get_serializer(data=form_data) if not serializer.is_valid(): return Response({self.form_name: serializer.errors}, status=status.HTTP_422_UNPROCESSABLE_ENTITY) # send email containing a reset link serializer.save() # trigger async email queue email_queued() # Return the success message with OK HTTP status msg = _( "Instructions on how to reset the password have been sent to '{email}'." ) response_data = { self.form_name: { 'success_message': msg.format(**serializer.data), } } return Response(response_data)