2016-04-29 73 views
0

我收到以下錯誤,同時試圖使用standard Python example的UnicodeDecodeError: 'ASCII' 編解碼器不能解碼 - Python的

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 27: ordinal not in range(128) 

這裏發送電子郵件的代碼是:

# Import smtplib for the actual sending function 
import smtplib 

# Import the email modules we'll need 
from email.mime.text import MIMEText 

# Open a plain text file for reading. For this example, assume that 
# the text file contains only ASCII characters. 
fp = open(textfile, 'rb') 
# Create a text/plain message 
msg = MIMEText(fp.read()) 
fp.close() 

# me == the sender's email address 
# you == the recipient's email address 
msg['Subject'] = 'The contents of %s' % textfile 
msg['From'] = me 
msg['To'] = you 

# Send the message via our own SMTP server, but don't include the 
# envelope header. 
s = smtplib.SMTP('localhost') 
s.sendmail(me, [you], msg.as_string()) 
s.quit() 

任何想法如何克服這一點?

+0

你運行的是哪個版本的python? – snakecharmerb

+0

@snakecharmerb Python 2.7,通過Spyder運行 – user136829

回答

0

如果unicode是不是對你很重要,你可以嘗試以下方法:

import unicodedata 

str = fp.read() 
normalized_message = unicodedata.normalize('NFKD', unicode(str, 'utf-8')).encode('ascii','ignore') 
msg = MIMEText(normalized_message) 

這都將Unicode字符轉換成ASCII等效最接近的一次。

+0

現在我得到了'TypeError:必須是unicode,而不是str' – user136829

+0

@ user136829編輯 – chrisd1100

相關問題