Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Condifcación utf8 en html
#1
Buenas,

Tengo una función en un programa para enviar correos electrónicos. Sería esta:

def envio(self, remitente, para, copia, asunto, body):
       
        with open('config.yaml', 'r') as file:
            config = yaml.safe_load(file)
   
        smtp = config['server_correo']['smtp_server']
        puerto = config['server_correo']['smtp_port']
        cuenta = config['server_correo']['account']
        contrasena = config['server_correo']['password']
        # Parametros del mensaje
        message = MIMEMultipart()
        message['From'] = remitente
        message['To'] = para
        if copia:
            message['CC'] = copia
        message['Subject'] = asunto
   
        message.attach(MIMEText(body, 'html', 'utf-8'))
       
        with smtplib.SMTP_SSL(smtp, puerto) as server:
            server.login(cuenta, contrasena)
            server.send_message(message)
       
        print(f"{datetime.datetime.now()} - Correo enviado")

Uso esta plantilla html, que está en un fichero yaml:

<html>
    <head>
        <meta charset="UTF-8">
        <style>
        table {{
            border-collapse: collapse;
        }}
        th, td {{
            border: 1px solid black;
            padding: 8px;
            text-align: left;
        }}
        </style>
    </head>
    <body>
        <h4>Buenos días</h4>
        <p>Revisar:</p>
        {}
    </body>
    </html>


El tema es que aunque, se envía bien el correo, y se especifica en la cabecera del html la codificación utf8 y también en el MIMEText, siguen sin codificarse correctamente. Las tildes o ñ no aparecen bien.

¿Sabéis a qué puede deberse?


Nada, ya lo he solucionado ... me faltaba el encoding al leer el fichero yaml:

with open('plantillas_correo.yaml', 'r', encoding='utf-8') as file:
plantilla = yaml.safe_load(file)
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)