изображение, встроенное в электронную почту HTML шаблон - Flask -mail ValueError: слишком много значений для распаковки (ожидается 2) - PullRequest
0 голосов
/ 17 июня 2020

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

Flask - фрагмент электронной почты:

msg = Message(form.title.data, recipients=['emial@gmail.com'])
msg.html = render_template('mail_temp/file.html')
with open('/home/daniel/PycharmProjects/Sitio/blue/static/pictures/ribbon.jpg', 'rb') as fp:
    msg.attach('ribbon.jpg', 'image/jpg', fp.read(), 'inline', headers={'Content-ID': 'ribbon'})
mail.send(msg)

HTML шаблон включает изображение в:

<td> <img src="cid:ribbon"/> </td>

Похоже, проблема возникает в параметре Сообщение. Прикрепите метод. Я нашел аналогичный вопрос и ответ, но 2 года назад, возможно, метод меняет его.

Заранее спасибо.

  File "/home/daniel/anaconda3/envs/Sitio/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/daniel/anaconda3/envs/Sitio/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/daniel/PycharmProjects/Sitio/blue/site/routes.py", line 220, in contactme
    mail.send(msg)
  File "/home/daniel/anaconda3/envs/Sitio/lib/python3.8/site-packages/flask_mail.py", line 492, in send
    message.send(connection)
  File "/home/daniel/anaconda3/envs/Sitio/lib/python3.8/site-packages/flask_mail.py", line 427, in send
    connection.send(self)
  File "/home/daniel/anaconda3/envs/Sitio/lib/python3.8/site-packages/flask_mail.py", line 190, in send
    message.as_bytes() if PY3 else message.as_string(),
  File "/home/daniel/anaconda3/envs/Sitio/lib/python3.8/site-packages/flask_mail.py", line 385, in as_bytes
    return self._message().as_bytes()
  File "/home/daniel/anaconda3/envs/Sitio/lib/python3.8/site-packages/flask_mail.py", line 371, in _message
    for key, value in attachment.headers:
ValueError: too many values to unpack (expected 2)
``

1 Ответ

0 голосов
/ 18 июня 2020

Оказывается, в параметрах msg.attach есть две проблемы:

  1. заголовки - это список вместо словаря;
  2. Тег Contend-ID заключен в < >
with open('/home/daniel/PycharmProjects/Sitio/blue/static/pictures/ribbon.jpg', 'rb') as fp:
    msg.attach('ribbon.jpg', 'image/jpg', fp.read(), 'inline', headers=[[Content-ID','<ribbon>']])
...