[Python] HTMLBody does not compile in Python when generating an Outlook email

Discussão em 'Python' iniciado por Stack, Fevereiro 10, 2025.

  1. Stack

    Stack Membro Participativo

    I am writing a Python module to generate an outlook e-mail with an attachment using win32com. All works fine except for the formatting of the HTMLBody. As far as I have researched, it is impossible to do the advance formatting of the HTMLBody in Python, you can only do it in html. I have used the following link's code as my primary concern was for my body to have the current date and time whenever an e-mail is generated https://www.geeksforgeeks.org/html-datetime-attribute/.

    def __Emailer(subject, recipient, cc, auto=True):
    import win32com.client as win32

    outlook = win32.Dispatch('outlook.application')
    mail = outlook.CreateItem(0)
    mail.To = recipient
    mail.CC = cc
    mail.Subject = subject

    mail.HTMLBody = """
    <html>
    <head></head>
    <body>


    <h1>GeeksforGeeks</h1>
    <h3>Approach 2: Using &lt;time&gt; Tag with JavaScript</h3>
    <time id="current-time"></time>

    <script>
    function updateTime() {
    const now = new Date();
    const timeElement = document.getElementById("current-time");
    const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
    timeElement.dateTime = now.toISOString();
    timeElement.innerHTML = 'Today is: ${now.toLocaleDateString(undefined, options)},
    Time: ${now.toLocaleTimeString()'};
    }

    setInterval(updateTime, 1000);
    updateTime();

    </script>

    <\body>


    </html>

    """

    mail.Attachments.Add(Source=r"C:\Users\project.xlsx")

    if auto:
    mail.Display(True)

    else:
    mail.open


    But in my output I only get these h1 and h3 lines. So, basically, the inside of the <\script> does not work. Output)

    Continue reading...

Compartilhe esta Página