es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La plantilla HTML para el correo electrónico no se muestra como se esperaba.

Cuando envío un correo electrónico con el código a continuación, el resultado no es el esperado. Falta una imagen Y la plantilla no está centrada como debería. Proporciono lo que existe frente a lo que se espera. No estoy seguro si el problema está en el código HTML o en la lectura de la plantilla.

Código en Python:

    import smtplib, ssl
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart

Clase Mail:

def __init__(self):
    self.sender_mail = 'someone@gmail.com'
    self.password = 'mi_clave'
    self.smtp_server_domain_name = "smtp.gmail.com"
    self.port = 465

def send(self, emails):
    ssl_context = ssl.create_default_context()
    service = smtplib.SMTP_SSL(self.smtp_server_domain_name, self.port, context=ssl_context)
    service.login(self.sender_mail, self.password)

    for email in emails:
        mail = MIMEMultipart('mixed')
        mail['Subject'] = 'Celebraciones'
        mail['From'] = self.sender_mail
        mail['To'] = email

        html_file = open('./templates/index.html')
        html_content = MIMEText(html_file.read(), 'html') 
        mail.attach(html_content) 
        service.sendmail(self.sender_mail, email, mail.as_string())

    service.quit()


if __name__=='__main__':

    mail = Mail()
    mail.send(emails=['you@gmail.com'])

Imagen faltante

index.html en Github

Resultado en Outlook:

Resultado en Outlook

Resultado esperado (esto es lo que se ve en el index.html en un navegador):

Resultado esperado

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema con la imagen faltante y la plantilla centrada es muy probablemente debido a la forma en que el cliente de correo electrónico está renderizando el HTML. Algunos clientes de correo electrónico tienen reglas estrictas para mostrar los correos electrónicos y es posible que no admitan ciertas etiquetas HTML, estilos CSS o recursos externos como imágenes.

    Para determinar la causa raíz del problema, puede intentar los siguientes pasos de solución de problemas:

    1. Verifique si la imagen está alojada en un servidor seguro (HTTPS). Algunos clientes de correo electrónico pueden no mostrar imágenes que no estén alojadas de forma segura.
    2. Incorpore la imagen en el código HTML utilizando el atributo cid:. Esto incrustará la imagen en el correo electrónico mismo y puede mejorar la compatibilidad con algunos clientes de correo electrónico.

    3. Utilice tablas para diseñar la plantilla HTML en lugar de depender de estilos CSS. Las tablas son ampliamente compatibles en los clientes de correo electrónico y pueden ayudar a garantizar un renderizado consistente.

    4. Pruebe la plantilla de correo electrónico en varios clientes de correo electrónico para ver si el problema persiste en diferentes plataformas.

    Si el problema persiste, puede ser necesario consultar a un experto en diseño de correo electrónico para asegurarse de que el código HTML y los estilos CSS sean completamente compatibles con todos los clientes de correo electrónico comunes.

Comments are closed.