【问题标题】:Why does an email subject contain linefeed or carriage return characters?为什么电子邮件主题包含换行符或回车符?
【发布时间】:2020-04-22 16:53:37
【问题描述】:
我正在编写代码来检查邮箱,并将看不见的邮件转发给其他用户。
但有时它会因错误而失败:
ValueError:标题值可能不包含换行符或回车符
我检查了原始获取的数据,发现“主题”值包含 \r\n。
并非所有邮件都包含,但有些邮件包含。
只是在邮箱中显示正常,我不知道为什么有些包含这样的字符。
跟题目的长度有关系吗?
我该如何处理这些情况?
谢谢:)
【问题讨论】:
标签:
email
smtp
imap
rfc
linefeed
【解决方案1】:
电子邮件具有最大行长。这是历史性的,可以这么说,这条规则并不是 100% 的。但是在标题字段中,空格将被视为与 CR LF 和空格序列或 htab 字符相同。这是一个很长的主题,以这种方式编码:
Subject: Pretend this is about 80-90
characters long
处理它的最简单方法是将任何空格字符序列视为单个空格。
阅读任何电子邮件消息的来源,您会在大部分时间看到这种包装。例如,Received 字段几乎总是被包装,如果有很多收件人,则通常是 To,或者 Content-Type/Content-Disposition 用于附件。