【排错日记】From: "=?utf-8?B?5byg5LiJ"<111@xxxx>

138 阅读1分钟

背景

  1. 开发一个功能读取邮件信息,其中 包含from字段的值。

  2. 原代码写法

    from_str = header['from'].split(' ')[-1].replace('<', '').replace('>', '')
    

    预期结果:111@xxxx

    可知:如果header['from']是=?utf-8?B?5byg5LiJ"<111@xxxx>时,from_str为=?utf-8?B?5byg5LiJ"<111@xxxx>,不是想要的结果。

邮件头

实例1

74D4A01A-9698-4426-B324-4F5C15E1EE5B.png

实例2

image.png

可以看出:邮件头信息里的From字段并不一定包含空格。

解决

from_str = header['from'].split('<')[-1].replace('<', '').replace('>', '')