ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • jinja2 template 으로 Html 본문작성 후 이메일 보내기
    python/응용 2023. 5. 27. 20:29

    templates/result.html 

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>My Report</title>
    </head>
    <body>
    
    <!-- email 로 발송되기 때문에 header 에 css 정의를 하면 적용이 안되는 듯? -->
    <table style='width: 100%; border: 1px solid black; border-collapse: collapse;'>
        {% for item in items %}
        <tr style='border: 1px solid black;'>
            <td style='border: 1px solid black; padding: 7px'>{{ item.name }}</td>
            <td style='border: 1px solid black; padding: 7px'>{{ item.value }}</td>
        </tr>
        {% endfor %}
    </table>
    
    </body>
    </html>

     

    main.py

    import smtplib
    from datetime import datetime
    from email.mime.text import MIMEText
    from typing import List
    
    import jinja2
    
    template_loader = jinja2.FileSystemLoader(searchpath="/home/user/app/templates", encoding="utf-8")
    template_env = jinja2.Environment(loader=template_loader, autoescape=True)
    
    
    def make_html_content(title, request_time, url) -> str:
        template = template_env.get_template('result.html')
        items = [
            {'name': '제목', 'value': title},
            {'name': '시작 시간', 'value': request_time}
        ]
    
        return template.render(items=items, url=url)
    
    
    def send_html_email(sender_email: str, receiver_emails: List[str], subject: str, content: str) -> None:
        if receiver_emails:
            with smtplib.SMTP("backendsmtp.mycompany.com", 25) as server:
                msg = MIMEText(content, 'html')
                msg['Subject'] = subject
                msg['From'] = sender_email
                msg['To'] = ','.join(receiver_emails)
                server.send_message(msg)
    
    
    if __name__ == '__main__':
        html = make_html_content('메일 제목', datetime.now(), 'http://www.google.com')
        print(html)
        # send_html_email(..., content=html)

    'python > 응용' 카테고리의 다른 글

    Currying  (0) 2023.06.11
    pydantic: Generics  (0) 2023.05.28
    자주하는 실수  (0) 2023.05.07
    __slot__, __call__  (0) 2023.04.10
    yield from  (0) 2023.04.10

    댓글

Designed by Tistory.