这是我发送电子邮件的代码片段:
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())
除了主题部分外,一切都正常。当我尝试发送包含特殊字符的字符串(例如“ação”)时,它会引发此错误:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2: ordinal not in range(128)
我该如何使用MIMEText发送包含特殊字符的邮件主题?
Header
对象,我都得到了完全相同的输出。这可能是由于compat32造成的。据推测,OP使用的是早期版本的Python3,其行为不同。因此,当前的文档似乎有些误导,因为并不一定需要使用Header
对象。然而,为了向后兼容,最好继续使用它。 - ekhumoro