Django 邮件 HTML 格式无效

0 投票
1 回答
44 浏览
提问于 2025-04-14 16:43

我最近刚开始学习Python和Django,这个项目是为了给公司添加一个提醒/通知功能,通过发送邮件来实现。

我遇到了一个问题,就是我无法正确显示带有值的HTML。

如果我把代码改成html = html.format('\n'.join(d)),它只会显示一个值,而实际上应该有两个值,另一个值就没显示出来。

如果我使用下面的代码,它会显示两个值,但HTML部分却缺失了。

我到底漏掉了什么呢?

html = """\
            <html>
                <head></head>
                    <body>
                        <p>Hi Team,<br><br>
                        Reminder:<br>
                        Please check if Domain listed below need to be renewed.<br><br>
                        {0}

                        </p>
                    </body>
            </html>
        """
    
www = get_data_from_db()
week_old = 14
d = []

for domain in www:

    days = compute_days(domain)
    if int(days) <= int(week_old):

        d.append("{0} is expiring in {1} days.<br>".format(domain, days))
        print(d)

        html = ('\n'.join(d))

        print(html)

part2 = MIMEText(html, 'html')
    
msg.attach(part2)

1 个回答

0

经过几次修改,我终于得到了想要的结果。下面是我所做的修改。

html_body = """\
            <html>
                <head></head>
                    <body>
                        <p>Hi Team,<br><br>
                        
                        name below expiring soon:<br><br>
                        
                        
            """
    html_close = """\
                        <br>
                        <p>Regards<br>
                        </p>
                    </body>
            </html>
    """

    www = get_data_from_db()

    for domain in www:
        d = []
        week_old = 14
        days = compute_days(domain)
        if int(days) <= int(week_old):

            d.append("{0} is expiring in {1} days.<br>".format(domain, days))
            print(d)

            html1 = (''.join(d))

            html_body = html_body + html1

            print(html_body)

    html = html_body + html_close

    part2 = MIMEText(html, 'html')

    msg.attach(part2)

撰写回答