Отправляйте почту со встроенными изображениями в Django, используя django-mail-queue

Я хочу отправлять встроенные рекламные изображения в почтовом содержимом, как веб-сайты электронной коммерции отправляют их по почте. Для рассылки я использовал пакет django-mail-queue, но не знаю поддерживается он в нем или нет. Буду признателен, если вы мне поможете.

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


person Darshit    schedule 18.09.2017    source источник


Ответы (1)


Вы можете отправить изображения как Context, а затем передать их как переменный шаблон. Как это:

from django.core.mail import EmailMessage
from django.template import Context
from django.template.loader import get_template

def some_view(request):
    template = get_template('myapp/email.html')
    image_url ="static/images/sample_image.jpg"
    context = Context({'user': user, 'other_info': info,'image_url':image_url})
    content = template.render(context)
    if not user.email:
        raise BadHeaderError('No email address given for {0}'.format(user))
    msg = EmailMessage(subject, content, from, to=[user.email,])
    msg.send()

А затем в шаблоне myapp/email.html используйте это:

<img src="{{ image_url }}" ...>

И если изображения на стороне сервера недоступны для получателя электронной почты, вы можете отправлять изображения в виде файлов вложений, но это не будет служить цели, для фактического отображения изображения img src требуется исходный URL-адрес, где хранится фактическое изображение.

Вы можете разместить свои изображения на любом другом веб-сайте для размещения изображений и поместить этот URL-адрес в переменную image_url.

person Prakhar Trivedi    schedule 18.09.2017
comment
Спасибо!! но сервер, на котором размещено мое приложение Django, недоступен получателю электронной почты, поэтому предоставление URL-адреса не будет работать. - person Darshit; 18.09.2017
comment
@Darshit Итак, как вы собираетесь показывать изображения приемнику ?? Метод такой. Вы можете разместить свои изображения на любом другом веб-сайте для размещения изображений и поместить этот URL в переменную image_url. - person Prakhar Trivedi; 18.09.2017
comment
Есть ли способ отправить изображение с содержимым электронной почты самостоятельно? - person Darshit; 18.09.2017
comment
@Darshit Поскольку вы можете отправлять изображения в виде вложенных файлов, но это не будет служить цели, для фактического отображения изображения img src требуется исходный URL-адрес, где хранится фактическое изображение. - person Prakhar Trivedi; 18.09.2017
comment
@Darshit Нет. Его можно отправить как вложение, но в этом случае оно не будет отображаться. - person Prakhar Trivedi; 18.09.2017
comment
Спасибо за помощь. Я буду размещать изображения на другом сервере. - person Darshit; 18.09.2017