Как вставить связанное изображение в электронную почту Python - PullRequest
0 голосов
/ 08 мая 2019

Существует множество ответов о том, как вставлять изображения в электронные письма в python.Чего я не могу понять, так это как встроить изображение, на которое можно кликнуть и которое приводит вас на сайт.

Отправка составных электронных писем в формате html, содержащих встроенные изображения Я в значительной степени следовал за первым комментариемэто точно.Мне просто нужно выяснить, как добавить ссылку на это изображение

Это то, что я следовал

msgRoot = MIMEMultipart('related')

fp = open('test.jpg', 'rb')

msgImage = MIMEImage(fp.read())

fp.close()

msgImage.add_header('Content-ID', "<image1>")

msgRoot.attach(msgImage)

Очевидно, что это просто встраивает изображение, но мне нужно, чтобы встроить связанное изображение!

1 Ответ

1 голос
/ 09 мая 2019

В качестве примера вы указали правильно отформатированные электронные письма в формате HTML, где add_alternative() использовался для предоставления HTML-части сообщения.Вы исключили это из того, что написали.Если вы включаете фактическое тело HTML для своей электронной почты, тогда все, что вам нужно сделать, это обернуть изображение в элемент привязки (ссылка) с URL-адресом, на который вы пытаетесь создать ссылку.

(адаптировано из вашей ссылкивопрос)

msg.add_alternative("""\
<html>
    <body>
        <p>Click the Image below to visit our site!</p>
        <a href="www.google.com"><img src="cid:{image_cid}"></a>
    </body>
</html>
""".format(image_cid=image_cid[1:-1]), subtype='html')

Редактировать

Не нужно тестировать Python 2, но приведен следующий код из принятого ответа в том же потоке (который был указан как Python2.x совместимо), предположительно, должно работать.

msgAlternative = MIMEMultipart('alternative')
msgRoot.attach(msgAlternative)

msgText = MIMEText('<b>Some <i>HTML</i> text</b> and an image.<br><a href="www.google.com"><img src="cid:image1"></a><br>Nifty!', 'html')
msgAlternative.attach(msgText)

Опять же, здесь дело в том, что вы встраиваете изображение через html, что также позволяет вам применять теги привязки (и в основном любой другой стиль, который вы захотите).

...