email com imagens

40 views
Skip to first unread message

Diomedes Amparo

unread,
Oct 30, 2024, 9:00:05 AM10/30/24
to Django Brasil
ola amigos!
bom dia

criei uma views para envio de email esta funcionando normalmente porem não consigo adicionar uma imagem (png jpeg) que esta em static/img/ agora se eu colocar uma imagem de uma https:// qualquer da net funciona normal, já tentei de todas as formas e a imagem não sobe, abaixo minha views e send_mail.html

views:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

def sendEmailContact(email_data):
    server_smtp = descriptografar(configuracao["SENDMAIL"]["server_smtp"])
    user_smtp = descriptografar(configuracao["SENDMAIL"]["email_smtp"])
    password_smtp = descriptografar(configuracao["SENDMAIL"]["senha_smtp"])
    porta_smtp = 587
   
    email_to = CustomUser.objects.values('web_email').filter(web_empresa=webempresa_global, empresa_db='admin')
    receive_email = email_to[0]['web_email']
    subject = "Formulário de Contato"

    html_content = render_to_string('send_mail.html', email_data)
   
    #criando o email mas não envia
    message = MIMEMultipart()
    message['From'] = user_smtp
    message['to'] = receive_email
    message['Subject'] = subject
    message.attach(MIMEText(html_content, 'html'))



send_mail.html
reparem que na linha comentada a imagem e carregada normalmente, como faço para carregar minhas imagens?
<!DOCTYPE html>
{% load static %}
<html lang="pt-br">
    <head>
...
...
    </head>
    <body style="margin: 0; padding: 0; font-family: Arial, sans-serif; background-color: #f2f2f2;">
        <table border="0" cellpadding="0" cellspacing="0" width="100%" style="background-color: #f2f2f2;">
            <tr>
                <td align="center">
                    <table border="0" cellpadding="0" cellspacing="0" width="600" style="background-color: #ffffff;">
                        <tr>
                            <td align="center" style="padding: 40px 0; text-align: center;">
                                {% if tipo_email == 'contato' %}
                                    <!--<img src="https://img.freepik.com/fotos-gratis/paisagem-de-nevoeiro-matinal-e-montanhas-com-baloes-de-ar-quente-ao-nascer-do-sol_335224-794.jpg" alt="Paisagem" width="400" style="display: block; margin: 0 auto;">-->
                                   <br>
                                    <h3 style="text-align: center;" >{{titulo}}</h3>
                                    {% for v in corpo %}
                                        <p style="text-align: left; font-size: 12px;"><strong>{{v.0}}</strong></p>
                                        <hr>
                                    {% endfor %}
                                {% else %}
                                    <p><strong>{{tipo_email}}</strong></p>
                                {% endif %}
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
...
...

L e O

unread,
Oct 30, 2024, 9:09:49 AM10/30/24
to django...@googlegroups.com
não sei se eu entendi direito, mas vc não teria q por  <img src="{% static 'images/minha_imagem.jpg' %}" alt="Minha Imagem"> ou
 <img src="{{ produto.foto.url }}" alt="Foto do Produto"> ?

--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.
Para ver esta conversa, acesse https://groups.google.com/d/msgid/django-brasil/2be85274-f281-439a-9c5b-36b74a0f9c10n%40googlegroups.com.

Maciel Portugal

unread,
Oct 30, 2024, 9:10:14 AM10/30/24
to django...@googlegroups.com
A imagem do static tem que ter url externa acessível e hoje os navegadores não deixam carregar conteúdo não seguro em contexto seguro, a sua url tem que se https.
outra alternativa é anexa a imagem ao email https://docs.python.org/3/library/email.examples.html

Em qua., 30 de out. de 2024 às 10:00, Diomedes Amparo <microamp.i...@gmail.com> escreveu:
--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.
Para ver esta conversa, acesse https://groups.google.com/d/msgid/django-brasil/2be85274-f281-439a-9c5b-36b74a0f9c10n%40googlegroups.com.


--
Maciel Portugal 
tinkering.com.br

Marcos Thomaz

unread,
Oct 30, 2024, 12:52:16 PM10/30/24
to django...@googlegroups.com
Uma alternativa é converter a imagem em base64 e usar esse código como src da tag img.



--


Marcos Thomaz da Silva
Analista de Tecnologia da Informação

Dionatan Maicon

unread,
Oct 30, 2024, 1:18:08 PM10/30/24
to django...@googlegroups.com
Boa tarde, creio que dá para usar normalmente puxando dos static, recomendo que:

1. Sempre no arquivo HTML, carregue primeiro o {% load static %} e depois vem o Doctype.

2. Se você esta testando e a variavel 'debug' no settings.py esteja True, irá funcionar normal, caso seja False, rode o comando py manage.py collectstatic

3. revise as configurações dos arquivos static no settings.py do django, deve ser assim:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
4. e por último segue a chamada do arquivo no html, <img src="{% static 'img/minha_imagem.png' %}" alt="Paisagem" width="400" style="display: block; margin: 0 auto;">


Se puder manter atualizado sobre o caso.


Josir

unread,
Oct 31, 2024, 7:50:31 AM10/31/24
to Django Brasil
Olá Microamp,

o static não vai funcionar no email pois ele gera uma URL relativa "/static...."
Neste caso, você vai ter que adicionar o domínio também o src tem que ter "{{ SITE_URL }}{% static ....%}"

Onde {{SITE_URL}} é a URL base do seu sistema.

Josir.
Reply all
Reply to author
Forward
0 new messages