Scorpion_MB
@Scorpion_MB
Изучаю Питон

Как отправить таблицу в сообщение почты в Питоне?

Добрый день! Есть необходимость вставить таблицу в почтовое сообщение в Питоне. Как это можно организовать?
Как я понимаю, нужно преобразовать текст в html код?
  • Вопрос задан
  • 128 просмотров
Решения вопроса 2
ramzis
@ramzis
FullStackOverflow
Мои знания поиска в Google дали за 2 минут результат.
import smtplib                                      # Импортируем библиотеку по работе с SMTP

# Добавляем необходимые подклассы - MIME-типы
from email.mime.multipart import MIMEMultipart      # Многокомпонентный объект
from email.mime.text import MIMEText                # Текст/HTML
from email.mime.image import MIMEImage              # Изображения

addr_from = "email@mail.ru"                # Адресат
addr_to   = "email@mail.ru"                  # Получатель
password  = "password"                                  # Пароль

msg = MIMEMultipart()                               # Создаем сообщение
msg['From']    = addr_from                          # Адресат
msg['To']      = addr_to                            # Получатель
msg['Subject'] = 'Тема сообщения'                   # Тема сообщения

#body = "Текст сообщения"
#msg.attach(MIMEText(body, 'plain'))                 # Добавляем в сообщение текст


table = [{"username":"Alex", "email":"alex@alex.ru"}, {"username":"Habr", "email":"habrrr@habr.ru"}]
result = ''
for i in table:
    result += f"<tr><td>{i['username']}</td><td>{i['email']}</td></tr>"

html = f"""\
<html>
  <head></head>
  <body>
        <table border="1">
            <tr>
                <th>Username</th>
                <th>eMail</th>
            </tr>
            {result}
        </table>
  </body>
</html>
"""
msg.attach(MIMEText(html, 'html', 'utf-8'))         # Добавляем в сообщение HTML-фрагмент

server = smtplib.SMTP('smtp.mail.ru', 587)           # Создаем объект SMTP
server.set_debuglevel(True)                         # Включаем режим отладки - если отчет не нужен, строку можно закомментировать
server.starttls()                                   # Начинаем шифрованный обмен по TLS
server.login(addr_from, password)                   # Получаем доступ
server.send_message(msg)                            # Отправляем сообщение
server.quit()


6061b955bd368650899028.png
Ответ написан
Комментировать
Scorpion_MB
@Scorpion_MB Автор вопроса
Изучаю Питон
mail_sent = EmailMultiAlternatives(subject,
                                message,
                                settings.EMAIL_HOST_USER,
                                ['boleev@mail.ru'])
mail_sent.attach_alternative(html, 'text/html')
mail_sent.send()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы