Aquí está una parte de mi código que envía un correo electrónico:MimeText UTF-8 codificar problemas al enviar correo electrónico
servidor = smtplib.SMTP()
servidor.connect(HOST, PORT)
servidor.login(user, usenha)
assunto = str(self.lineEdit.text())
para = str(globe_email)
texto = self.textEdit.toPlainText()
textos = str(texto)
corpo = MIMEText(textos.encode('utf-8'), _charset='utf-8')
corpo['From'] = user
corpo['To'] = para
corpo['Subject'] = assunto
servidor.sendmail(user, [para], corpo.as_string())
Todo está bien, excepto la parte del sujeto. Cuando intento enviar una cadena con caracteres especiales (por ejemplo, "en Acción") que plantea este error:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2: ordinal not in range(128)
¿Cómo puedo enviar mensajes de correo electrónico con caracteres especiales en el Tema de MimeText?
funcionó! Casi me daba por vencido ... Encontré algo sobre la opción Encabezado antes de hacer esta pregunta, pero la forma en que lo probé no funcionó, pero ahora funciona muy bien. ¡De verdad gracias! –
Esta solución funcionó perfectamente para mí. – alfredocambera
De acuerdo con los documentos, el '.encode ('utf-8')' no es necesario en su llamada a MIMEText. Siempre que especifique la codificación utf-8, codificará automáticamente unicode: "... Si _text es unicode, se codifica utilizando el output_charset de _charset, de lo contrario se usa tal como está". Probado y parece funcionar para mí. – patricksurry