Python с использованием для l oop в html почтовом теле - PullRequest
1 голос
/ 07 февраля 2020

У меня есть следующий кусок кода. Длина my_header_list и my_msg_list может измениться, поэтому я собираюсь заменить следующий код на l oop в пределах html.

def send_email(my_header_list, my_msg_list, recipients):
    outlook = win32.Dispatch('outlook.application')
    mail = outlook.CreateItem(0)
    mail.To = ";".join([i for i in recipients])
    mail.Subject = 'Summary | ' + str(datetime.now().strftime("%m-%d-%Y %H:%M"))
    mail.Body = html = """\
    <html>
    <head></head>
    <body>
        <a href="https://www.awebsite.com">ABC</a>
        <br>
        <b>"""+str(my_header_list[0])+ """</b>
        <br>
        """ +"<br/>".join(str(my_msg_list[0]).split("\n"))+ """
        <br>
        <b>""" +str(my_header_list[1])+ """</b>
        <br>
        """ +"<br/>".join(str(my_msg_list[1]).split("\n"))+ """
        <br>
        <b>""" +str(my_header_list[2])+ """</b>
        <br>
        """ +"<br/>".join(str(my_msg_list[2]).split("\n"))+ """
        <br>
        <b>""" +str(my_header_list[3])+ """</b>
        <br>
        """ +"<br/>".join(str(my_msg_list[3]).split("\n"))+ """
        <br>
        <b>""" +str(my_header_list[4])+ """</b>
        <br>
        """ +"<br/>".join(str(my_msg_list[4]).split("\n"))+ """
        <br>
        </p>
    </body>
    </html>
    """
    mail.HTMLBody = (mail.Body)
    mail.Send()

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Вы можете просто изменить эту строку следующим образом

html = """\
    <html>
    <head></head>
    <body>
    <a href="https://www.awebsite.com">ABC</a>"""
for index in range(0,4):
    html = html + """<br>
    <b>"""+str(my_header_list[index])+ """</b>
            <br>
            """ +"<br/>".join(str(my_msg_list[index]).split("\n"))+ """
            <br>
        </p>
    </body>
    </html>
    """
1 голос
/ 07 февраля 2020

Соберите свои строки в списке, присоединитесь в конце.

def send_email(my_header_list, my_msg_list, recipients):
    outlook = win32.Dispatch('outlook.application')
    mail = outlook.CreateItem(0)
    mail.To = ";".join([i for i in recipients])
    mail.Subject = 'Summary | ' + str(datetime.now().strftime("%m-%d-%Y %H:%M"))

    myhtml = []            

    myhtml.append("<html>")
    myhtml.append("<head></head>")
    myhtml.append("<body>")
    myhtml.append('<a href="https://www.awebsite.com">ABC</a>')

    for line in range(5):
        myhtml.append("<br>")
        myhtml.append("<b>"""+str(my_header_list[line])+ """</b><br>")
        myhtml.append(""" +"<br/>".join(str(my_msg_list[line]).split("\n"))+ """)

    myhtml.append("</p>")
    myhtml.append("</body>")
    myhtml.append("</html>")

    mail.Body = "\n".join(myhtml)
    mail.HTMLBody = (mail.Body)
    mail.Send()
...