Задать вопрос
@MAGistr_MTM
Учусь программировать

Как убрать картинку из прикрепленных файлов?

Доброго времени суток.
Я на своем проекте формирую письмо и высылаю его с помощью Python. В теле письма есть лого компании, что б гугл отображал картинки, то я добавляю их следующим образом:
def send_email(self, supply_order, new_confirmation, extra_text):
    ...
    email = EmailMultiAlternatives(
            subject,
            email_body,
            from_email=company.email,
            to=emails_to,
            cc=[company.email_copy]
        )
    
    self.add_files(email, supply_order, products_table, logo_path)
    email.send(fail_silently=False)

def add_files(self, email, supply_order, products_table, logo):
    ...
    email.attach('order.csv', csvfile.getvalue(), 'text/csv')
    email.attach('order.pdf', pdf.dest.getvalue(), 'application/pdf')

    if logo:
        fp = open(urllib.unquote(logo), 'rb')
        img = MIMEImage(fp.read())
        fp.close()
        img.add_header('Content-ID', '<logo>')
        email.attach(img)

Если открывать письмо в браузере, то все ОК, но если я открываю его на MAC через Mail, то картинка(лого) отображается как прикрепленный файл. Так не должно быть. Как ее убрать от туда? Или как иначе прикреплять картинку к письму?

Заранее благодарен за советы.

===========UPD===========
Нашел, что в клиенте на MAC в источнику письма, в отличии от веб-клинта, есть base64 предствление лого:
Веб:
--===============2904978512032783707==
Content-Type: image/jpeg
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-ID: <logo>

--===============2904978512032783707==--

МАС Mail:
--===============2904978512032783707==
Content-Type: image/jpeg
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-ID: <logo>

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24J1dCBieSB0
...
LCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGhc3VyZS4=
--===============2904978512032783707==--
  • Вопрос задан
  • 324 просмотра
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
Для инлайн-картинок необходимо чтобы:
1. в заголовках картинки стояло Content-Disposition: inline
2. картинка располагалась внутри части multipart/related, в которую входит эта картинка и HTML-часть письма
3. в HTML части был <img src=cid:....> с ссылкой на картинку

и MIME-Version: 1.0 не должно быть в заголовке части, только в основном заголовке письма.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы