Как отформатировать электронное письмо, содержащее данные формы, используя HTML?

#python #flask #flask-wtforms #smtplib

#python #flask #flask-wtforms #smtplib

Вопрос:

Я пытаюсь отформатировать электронное письмо с использованием HTML, которое отправляется мне всякий раз, когда кто-то заполняет форму вместе с данными формы, например, {{ name }}. В настоящее время мне удалось передать данные формы по электронной почте, используя строку «f». Я не знаю, как сделать заголовки полей (например, имя клиента:, Email:) жирным шрифтом, чтобы они не сливались с данными формы.

         MY_EMAIL = os.environ.get('MY_EMAIL')
        MY_EMAIL_PASSWORD = os.environ.get('MY_EMAIL_PASSWORD')
        
        message = EmailMessage()
        message['Subject'] = "New form submitted"
        message['From'] = MY_EMAIL
        message['To'] = "an_email@hotmail.com"
        message.set_content(f" Client name: {client_name}nn Email: {client_email}")
        with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
            smtp.login(MY_EMAIL, MY_EMAIL_PASSWORD)
            smtp.send_message(message)
  

Текущий пример сообщения электронной почты:

Имя клиента: Джек

Электронная почта: blackjack@hotmail.com

Желаемый результат («Имя клиента», «Адрес электронной почты должен быть выделен жирным шрифтом»):

Имя клиента: Джек

Электронная почта: blackjack@hotmail.com

Ответ №1:

Ответ находится в модуле email.mime.text. Этот модуль предоставляет функцию, которая позволяет отображать HTML-код в вашей строке «f». Этот бит пришлось добавить:

             message = f"<b>Client name:</b> {client_name}<br></br> <b>Email:</b> {client_email}"
            message = MIMEText(message, "html")
  

Вот полный код:

 from email.mime.text import MIMEText

        MY_EMAIL = os.environ.get('MY_EMAIL')
        MY_EMAIL_PASSWORD = os.environ.get('MY_EMAIL_PASSWORD')
        
        message = EmailMessage()
        message = f"<b>Client name:</b> {client_name}<br></br> <b>Email:</b> {client_email}"
        message = MIMEText(message, "html")
        message['Subject'] = "New form submitted"
        message['From'] = MY_EMAIL
        message['To'] = "an_email@hotmail.com"
        
        with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
            smtp.login(MY_EMAIL, MY_EMAIL_PASSWORD)
            smtp.send_message(msg_for_me)