Среда: Ubuntu 18.10, Python 2.7.15, Django 1.11.16
Я пытаюсь отправить электронное письмо, содержащее встроенное изображение.У меня есть следующий код:
msg = EmailMultiAlternatives(some_subject, some_body, 'from@some-domain.com', ['to@some@domain'])
img_data = open('path/to/image.png', 'rb').read()
img = MIMEImage(img_data)
msg.attach(img)
msg.send()
(я включил только тот код, который, на мой взгляд, уместен, но я могу добавить больше по требованию.)
Вышеуказанное правильно работает, и изображениеправильно отображается на большинстве почтовых клиентов (около 7 из них, мобильных, настольных или веб-почты), на которых я тестировал, с двумя исключениями: Mozilla Thunderbird 60 и некоторые собственные почтовые клиенты macOS.
В Thunderbirdизображение отображается не в строке, а в самом конце сообщения.На клиенте macOS изображение отображается встроенным, но, кроме того, оно также отображается в самом конце сообщения.
Я составил и отправил тестовое сообщение из другого почтового клиента, содержащее встроенное изображение, которое отображалось правильнокак на Thunderbird, так и на macOS.Я сравнил заголовки этого сообщения с заголовками сообщения, созданного моим кодом.
Я заметил, что для ошибочного сообщения 'Content-Type'
установлено на 'multipart/mixed'
, в то время как правильно отображаемое сообщение имеет тот же заголовок, установленный на 'multipart/related'
.
Я сохранил ошибочное сообщение в файле eml, вручную изменил значение этого заголовка и затем загрузил сообщение в Thunderbird.Сообщение было правильно отображено, и изображение было в нужном месте.
Если бы я мог установить для этого заголовка правильное значение, проблема была бы решена.
Итак, мой вопрос: есть ли возможность указать EmailMultiAlternatives
установить 'Content-Type' : 'multipart/related'
вместо значения по умолчанию 'multipart/mixed'
?
Я попытался добавить заголовок, как этоно он не работает:
msg = EmailMultiAlternatives(some_subject, some_body, 'from@some-domain.com', ['to@some@domain'], headers={'Content-Type' : 'multipart/related'})
Я получил следующую ошибку (я использую Amazon SES):
400 Bad Request
<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
<Error>
<Type>Sender</Type>
<Code>InvalidParameterValue</Code>
<Message>Duplicate header 'Content-Type'.</Message>
</Error>
<RequestId>xxxxxxxxxx</RequestId>
</ErrorResponse>
Если я не могу изменить этот заголовок, вы предлагаете какие-либо альтернативы