13
Đây là một phần của mã của tôi mà gửi một email:MIMEText UTF-8 mã hóa vấn đề khi gửi email
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())
Mọi thứ đều ok trừ một phần của đề. Khi tôi cố gắng để gửi một chuỗi với ký tự đặc biệt (ví dụ "ação") nó làm tăng lỗi này:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2: ordinal not in range(128)
Làm thế nào tôi có thể gửi email với các nhân vật đặc biệt trong Chủ đề của MIMEText?
Nó làm việc! Tôi đã gần như bỏ cuộc ... Tôi đã tìm thấy một cái gì đó về các tùy chọn Header trước khi tôi thực hiện câu hỏi này, nhưng cách tôi đã thử nó đã không làm việc, nhưng bây giờ hoạt động đẹp. Chân thanh cảm ơn bạn! –
Giải pháp này làm việc hoàn hảo hình thành tôi. – alfredocambera
Theo tài liệu, '.encode ('utf-8')' là không cần thiết trong cuộc gọi của bạn tới MIMEText. Miễn là bạn chỉ định mã hóa utf-8, nó sẽ tự động mã hóa unicode: "... Nếu _text là unicode, nó được mã hóa bằng output_charset của _charset, nếu không nó sẽ được sử dụng như là." Thử nghiệm và dường như làm việc cho tôi. – patricksurry