邮件模块编码错误
Encoding error with mailer module
当我在 python 2.7 中使用 the mailer module(通过 pip 安装在 Windows 上)时,如果我使用非 ascii 字符,我会遇到编码错误。
例如,使用以下代码段:
导入邮件程序
message = mailer.Message()
message.From = "me@example.com"
message.To = "shan-x@server.com"
message.Subject = "Test"
message.Body = "Stuff with special characters like à or ç"
mailer = mailer.Mailer('my_relay-smtp')
mailer.send(message)
然后我收到以下邮件:
Stuff with special characters like ?? or ??
我试过这个:
message.Body = "Stuff with special characters like à or ç".decode('utf-8')
(或 encode
)。但后来我得到一个错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe0' in position 35: ordinal not in range(128)
答案在 class 消息的帮助字符串中很明确:
Use the charset property to send messages using other than us-ascii
所以你应该使用:
message = mailer.Message(charset='utf8')
message.From = "me@example.com"
message.To = "shan-x@server.com"
message.Subject = "Test"
message.Body = "Stuff with special characters like à or ç".decode('utf-8')
mailer = mailer.Mailer('my_relay-smtp')
mailer.send(message)
当我在 python 2.7 中使用 the mailer module(通过 pip 安装在 Windows 上)时,如果我使用非 ascii 字符,我会遇到编码错误。
例如,使用以下代码段:
导入邮件程序
message = mailer.Message()
message.From = "me@example.com"
message.To = "shan-x@server.com"
message.Subject = "Test"
message.Body = "Stuff with special characters like à or ç"
mailer = mailer.Mailer('my_relay-smtp')
mailer.send(message)
然后我收到以下邮件:
Stuff with special characters like ?? or ??
我试过这个:
message.Body = "Stuff with special characters like à or ç".decode('utf-8')
(或 encode
)。但后来我得到一个错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe0' in position 35: ordinal not in range(128)
答案在 class 消息的帮助字符串中很明确:
Use the charset property to send messages using other than us-ascii
所以你应该使用:
message = mailer.Message(charset='utf8')
message.From = "me@example.com"
message.To = "shan-x@server.com"
message.Subject = "Test"
message.Body = "Stuff with special characters like à or ç".decode('utf-8')
mailer = mailer.Mailer('my_relay-smtp')
mailer.send(message)