Foros Python

Versión completa: Condifcación utf8 en html
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
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)