Python 分析电子邮件消息[';主题';]会产生3个字符串,而不是1个字符串
我正在解析一个电子邮件主题,并获得多个字符串(取决于主题长度),以Python 分析电子邮件消息[';主题';]会产生3个字符串,而不是1个字符串,python,python-2.7,Python,Python 2.7,我正在解析一个电子邮件主题,并获得多个字符串(取决于主题长度),以=?UTF-8?B?开头。这是正常的行为吗?如何使用一种编码将字符串连接到一个字符串 email_message = email.message_from_string(raw_email) print email_message['Subject'] 编辑: subjectDecoded, encoding = decode_header(email.utils.parseaddr(email_message['Subjec
=?UTF-8?B?
开头。这是正常的行为吗?如何使用一种编码将字符串连接到一个字符串
email_message = email.message_from_string(raw_email)
print email_message['Subject']
编辑:
subjectDecoded, encoding = decode_header(email.utils.parseaddr(email_message['Subject'])[1])[0]
if encoding==None:
subjectDecodedParsed = email_message['Subject']
print 'I am NOT decoding Subject'
print subjectDecodedParsed
else:
subjectDecodedParsed = subjectDecoded.decode(encoding)
print 'I am decoding subject'
print subjectDecodedParsed.encode('utf8') #<--- Only first line will be presented here
subjectDecoded,encoding=decode_头(email.utils.parseaddr(email_message['Subject'])[1])[0]
如果编码==无:
subjectDecodedParsed=电子邮件消息['Subject']
打印“我不是在解码主题”
打印被解码的对象
其他:
subjectDecodedParsed=subjectDecoded.decode(编码)
打印“我正在解码主题”
print subjectDecodedParsed.encode('utf8')#您的字符串使用MIME头的格式进行编码。如果您的主题
行用CRLF(\r\n
)行分隔符正确分隔,则会为您处理此问题:
>>> subject = '''\
... =?UTF-8?B?15bXkNeqINeR15PXmden15Qg15HXodeZ16HXmdeqINeR15vXk9eZINec15TXkdeZ158g?=\r
... =?UTF-8?B?157Xk9eV16Ig15TXp9eZ15PXldeTINeU15bXlCDXnNeQINei15XXkdeTINeQ150g15DXoNeZINeo15U=?=\r
... =?UTF-8?B?16nXnSDXlNeo15HXlA==?='''
>>> from email.header import decode_header
>>> for part in decode_header(subject):
... value = unicode(*part)
... print part
...
זאת בדיקה בסיסית בכדי להבין מדוע הקידוד הזה לא עובד אם אני רושם הרבה
主题(只有一个带回车符+换行符和前导空格的字符串)跨越多行,以符合MIME标准设置的严格行长限制
>>> subject = '''\
... =?UTF-8?B?15bXkNeqINeR15PXmden15Qg15HXodeZ16HXmdeqINeR15vXk9eZINec15TXkdeZ158g?=\r
... =?UTF-8?B?157Xk9eV16Ig15TXp9eZ15PXldeTINeU15bXlCDXnNeQINei15XXkdeTINeQ150g15DXoNeZINeo15U=?=\r
... =?UTF-8?B?16nXnSDXlNeo15HXlA==?='''
>>> from email.header import decode_header
>>> for part in decode_header(subject):
... value = unicode(*part)
... print part
...
זאת בדיקה בסיסית בכדי להבין מדוע הקידוד הזה לא עובד אם אני רושם הרבה