def post(self, request, format=None): data = json.loads(request.body) lesson = data['lesson'] account = data['account'] print("lesson : %s" % lesson) print("account : %s" % account['email']) mail = EmailMultiAlternatives( subject="Your Subject", body="This is a simple text email body.", from_email="*****@*****.**", to=["*****@*****.**"], headers={"Reply-To": "*****@*****.**"}) # Add template mail.template_id = 'f6581133-5c0b-4cc1-9a86-96a8bcd0db06' # Replace substitutions in sendgrid template mail.substitutions = { '%type%': 'Hatha', '%date%': 'mercredi 28 juin', '%heure%': '11h30' } # Add categories mail.categories = [ 'confirmation', ] mail.send() return Response({ 'status': 'OK', 'message': 'Email sent' }, status=status.HTTP_200_OK)
def send_mail( subject: str, html_body: str, from_email: str, to: List[str], categories: List[str] = None, reply_to: str = None, headers: dict = None, preheader: str = None, template_id: str = None, ): """Send mail using the dynamic template specified by template_id. This template should include these variables: - Subject: {{ subject }} - Preheader: {{ preheader }} - Somewhere in the template: {{{ body }}} Tip: to display a name for the from_email, use this format: - `"Name" <*****@*****.**>` """ if headers is None: headers = dict() headers["Reply-To"] = reply_to raw_body = strip_tags(html_body) mail = EmailMultiAlternatives(subject=subject, body=raw_body, from_email=from_email, to=to, headers=headers) if not template_id: template_id = settings.TEMPLATE_ID mail.template_id = template_id mail.dynamic_template_data = dict(body=html_body, subject=subject, preheader=preheader) if categories: mail.categories = categories mail.send()
def post(self, request, format=None): data = json.loads(request.body) type = data['type'] name = data['name'] email = data['email'] tel = data['tel'] message = data['message'] mail = EmailMultiAlternatives( subject="Subject", body="Body", from_email="*****@*****.**", to=["*****@*****.**"], headers={"Reply-To": "*****@*****.**"}) # Add template (ContactMessage) mail.template_id = '4f9c3e44-7d6f-4ff8-a8f2-99018e998aff' # Replace substitutions in sendgrid template mail.substitutions = { '%type%': type, '%email%': email, '%nom%': name, '%message%': message, '%tel%': tel } # Add categories mail.categories = [ 'contact', ] mail.send() return Response({ 'status': 'OK', 'message': 'Email sent' }, status=status.HTTP_200_OK)
def send_html_mail(template_name, context=None, from_email=settings.DEFAULT_FROM_EMAIL, to=None, bcc=None, cc=None, reply_to=None, headers=None): """Sends email rendered via templates. If `from_email` is a list of user instances or a single one, it will build a custom formatting for them using the stored data "Full Name <*****@*****.**>". This allows us to keep base email templates and just edit the parts of the body or subject. Also we're using a single template for all related notifications. Both email subject/body are saved in the same template. Params: template_name: Relative template path. See 'notifications/base.html' for the block names to use. context: Dictionary containing values to plug into the template from_email: String, containing email address on behalf of whom this email is sent. Provided by default in settings. to: a list of email addresses or User instances, for the TO field. bcc: a list of email addresses, for the BCC field cc: a list of email addresses, for the CC field headers: Eg. {"Reply-To": "*****@*****.**"} """ # Set default values to = to or [] cc = cc or [] bcc = bcc or [] context = context or {} context.update(**settings_constants()) headers = headers or {} # Format email address with names if User instances if isinstance(to, (list, QuerySet)): to = [format_user_email(user) for user in to] else: to = [format_user_email(to)] if reply_to: headers["Reply-To"] = reply_to # Rendering subject context["render_subject"] = True subject = render_to_string(template_name, context) subject = subject.replace("\r", " ").replace("\n", " ").strip() subject = "".join(subject.splitlines()) # Rendering body(both html + text version) context["render_subject"] = False html_version = render_to_string(template_name, context).strip() text_version = html2text.html2text(html_version) message = EmailMultiAlternatives( subject=subject, body=text_version, from_email=from_email, to=to, cc=cc, bcc=bcc, headers=headers) message.attach_alternative(html_version, "text/html") # Adds template_name as category for sendgrid, # so we can group stats by category message.categories = [template_name] return message.send()