"Как добавить стили в html_body в Django с win32?".

Я пытаюсь отправлять электронные письма через Django, используя библиотеку win32, но стили HTML не применяются. Стили в заголовке работают спорадически, и стили в теле также работают спорадически

` pythoncom.CoInitialize()

    dynamic_link='prueba'

    try:
        # Obtén todos los ingenieros con sus nombres concatenados
        outlook = win32.Dispatch('Outlook.Application')
        mail = outlook.CreateItem(0)

        # Configurar el remitente
        mail.SentOnBehalfOfName = 'example@outlook.com'

        mail.To = adminEmail
        mail.Subject = 'NUEVA SOLICITUD DE PRUEBAS DE LABORATORIO'
        html_body = f"""
            <html>
            <head>
                <style>
                    body {{
                        font-family: Arial, sans-serif;
                        padding: 20px;
                    }}
                    h1, p {{
                        color: #333;
                    }}
                    .background-red {{
                        background-color: red;
                    }}
                    #button {{
                        display: inline-block;
                        padding: 10px 20px;
                        background-color: #4CAF50;
                        color: #fff;
                        text-decoration: none;
                        border-radius: 5px;
                    }}
                </style>
            </head>
            <body class="background-red">
                <h1>Solicitud de pruebas de laboratorio</h1>
                <p>Nueva solicitud pruebas de laboratorio del usuario {FullName}</p>

                <div style="width: 130px; height:130px; background-color:white;">
                    <p>El usuario {FullName} ha creado una nueva solicitud de pruebas de laboratorio para el cliente {customer} con una fecha requerida para el {require_date}</p>
                </div>
                <a href="{dynamic_link}" id="button">Ir a la página</a>
            </body>
            </html>
            """
        mail.HTMLBody = html_body
        mail.Send()
        return Response({"message": "Correo enviado correctamente"}, status=status.HTTP_200_OK)
    except Exception as e:
         print(f"Error: {e}")

    finally:
        # Liberar recursos
        pythoncom.CoUninitialize()`

Мне нужна помощь, пожалуйста, я новичок в django

Шаблоны электронной почты могут быть довольно сложными в обращении из-за различий в способах их отображения на разных платформах или в почтовых приложениях. Проблема, с которой вы столкнулись, является очень распространенной в шаблонах электронной почты HTML, когда стили, определенные в теге, применяются непоследовательно. Многие почтовые клиенты, включая Outlook, имеют ограниченную или непоследовательную поддержку стилей, определенных в тегах <head> или внутри тегов <style>.

Самым надежным подходом к оформлению HTML-писем будет использование встроенного CSS, где это возможно, или использование изображений, если для определенного раздела необходимы пользовательские кнопки или какой-то современный стиль.

Встрочные стили имеют наивысший приоритет и, как правило, хорошо поддерживаются большинством почтовых клиентов. Используя встроенный CSS, вы можете значительно повысить вероятность того, что ваше письмо будет отображаться как положено на различных платформах. Проверить, какие HTML-теги и стили CSS поддерживаются, можно на сайте "The Ultimate Guide to CSS for Email clients"

".

В вашем случае вы можете изменить html_body вот так, где я применил все необходимые CSS в качестве встроенного стиля (измените по мере необходимости):

html_body = f"""
    <html>
    <body style="font-family: Arial, sans-serif; padding: 20px; background-color: red;">
        <h1 style="color: #333;">Solicitud de pruebas de laboratorio</h1>
        <p style="color: #333;">Nueva solicitud pruebas de laboratorio del usuario {FullName}</p>

        <div style="width: 130px; height: 130px; background-color: white; color: #333;">
            <p>El usuario {FullName} ha creado una nueva solicitud de pruebas de laboratorio para el cliente {customer} con una fecha requerida para el {require_date}</p>
        </div>
        <a href="{dynamic_link}" style="display: inline-block; padding: 10px 20px; background-color: #4CAF50; color: #fff; text-decoration: none; border-radius: 5px;">Ir a la página</a>
    </body>
    </html>
"""
Вернуться на верх