2016-04-29 8 views
0

をここでstandard Python exampleUnicodeDecodeError: '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 Spyderを実行しているPython 2.7 – user136829

答えて

0

ユニコードがあなたにとって重要でない場合は、次の手順を試みることができる:

import unicodedata 

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

これは、最も近いASCII文字にすべてのUnicodeに変換します。

+0

これで 'TypeError:strではなくunicodeでなければならない 'というメッセージが表示される – user136829

+0

@ user136829 edited – chrisd1100

関連する問題