I'm using MIMEText to create an email from scratch in Python 3.2, and I have trouble creating messages with non-ascii characters in the subject.
For example
from email.mime.text import MIMEText
body = "Some text"
subject = "? My Subject" # first char is non-ascii
msg = MIMEText(body,'plain','utf-8')
msg['Subject'] = subject # <<< Problem probably here
text = msg.as_string()
The last line gives me the error
UnicodeEncodeError: 'ascii' codec can't encode character 'xbb' in position 0: ordinal not in range(128)
How do I tell MIMEText that the subject is not ascii ? subject.encode('utf-8')
doesn't help at all, and anyway I've seen people using unicode strings with no problems in other answers (see for example Python - How to send utf-8 e-mail?)
Edit: I'd like to add that the same code doesn't give any error in Python 2.7 (thought that doesn't mean that the result is correct).
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…