How to send html email with django with dynamic content in it?

后端 未结 7 1147
一向
一向 2020-12-04 11:09

Can anyone please help me sending html email with dynamic contents. One way is to copy the entire html code into a variable and populate the dynamic code within it in Django

7条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-04 11:36

    If you want dynamic email templates for your mail then save the email content in your database tables. This is what i saved as HTML code in database =

    Hello.. {{ first_name }} {{ last_name }}.
    This is an important {{ message }}
    By Admin.

    Good Day

    In your views:

    from django.core.mail import EmailMultiAlternatives
    from django.template.loader import get_template
    
    def dynamic_email(request):
        application_obj = AppDetails.objects.get(id=1)
        subject = 'First Interview Call'
        email = request.user.email
        to_email = application_obj.email
        message = application_obj.message
    
        text_content = 'This is an important message.'
        d = {'first_name': application_obj.first_name,'message':message}
        htmly = FirstInterviewCall.objects.get(id=1).html_content #this is what i have saved previously in database which i have to send as Email template as mentioned above HTML code
    
        open("partner/templates/first_interview.html", "w").close() # this is the path of my file partner is the app, Here i am clearing the file content. If file not found it will create one on given path.
        text_file = open("partner/templates/first_interview.html", "w") # opening my file
        text_file.write(htmly) #putting HTML content in file which i saved in DB
        text_file.close() #file close
    
        htmly = get_template('first_interview.html')
        html_content = htmly.render(d)  
        msg = EmailMultiAlternatives(subject, text_content, email, [to_email])
        msg.attach_alternative(html_content, "text/html")
        msg.send()
    

    This will send the dynamic HTML template what you have save in Db.

提交回复
热议问题