은 python3에서하는 Header
객체가 "UTF-8"로 Subject
을 인코딩하는 데 필요한 것으로 보인다
>>> from email.mime.text import MIMEText
>>> from email.header import Header
>>> s = 'ação'
>>> m = MIMEText(s.encode('utf-8'), 'plain', 'utf-8')
>>> m['Subject'] = Header(s, 'utf-8')
>>> m.as_string()
'Content-Type: text/plain; charset="utf-8"\nMIME-Version: 1.0\nContent-Transfer-Encoding: base64\nSubject: =?utf-8?b?YcOnw6Nv?=\n\nYcOnw6Nv\n'
그래서 원래 스크립트가 될 것입니다 :
servidor = smtplib.SMTP()
servidor.connect(HOST, PORT)
servidor.login(user, usenha)
assunto = str(self.lineEdit.text())
para = str(globe_email)
texto = str(self.textEdit.toPlainText())
corpo = MIMEText(texto.encode('utf-8'), 'plain', 'utf-8')
corpo['From'] = user
corpo['To'] = para
corpo['Subject'] = Header(assunto, 'utf-8')
servidor.sendmail(user, [para], corpo.as_string())
그것은했다! 나는 거의 포기하고 있었다. 나는이 질문을하기 전에 Header 옵션에 대해 뭔가를 발견했다. 그러나 내가 시도한 방식은 효과가 없었지만 지금은 아름답게 작동한다. 정말 고마워! –
이 솔루션은 완벽하게 작동합니다. – alfredocambera
문서에 따르면 MIMEText 호출시'.encode ('utf-8')'은 불필요합니다. utf-8 인코딩을 지정하면 유니 코드를 자동으로 인코딩합니다. "... _text가 유니 코드이면 _charset의 output_charset을 사용하여 인코딩되고, 그렇지 않으면 그대로 사용됩니다." 시험되고 나를 위해 일하는 것 같습니다. – patricksurry