我用来Email::MIME生成电子邮件。我可以使用以下方法生成标头:
$email->header_str_set('some-label', @my-array);
Run Code Online (Sandbox Code Playgroud)
问题是,如果输出超过 70 个字符,它会将结果分成 2 或 3 行。我需要它在一行中。
我查看了Email::MIME文档,发现:
... header_str 参数是要包含在消息中的标头对列表。每对的值应为将根据需要进行 MIME 编码的文本字符串。或者,它可以是具有 as_mime_string 方法的对象,该方法实现该对象到 MIME 编码字符串的转换。使用两个命名输入参数调用该对象方法:charset 和 header_name_length
我查了很多,但没有找到如何改变这个变量的值。
有任何想法吗?
我尝试过使用类似的东西:
$email->header_name_length_set(100);
Run Code Online (Sandbox Code Playgroud)
但它说无法定位对象方法。
电子邮件格式对一行的长度有限制。引用RFC 5322 第 2.1.1 节:
该规范对一行中的字符数有两个限制。每行字符必须不超过 998 个字符,并且应该不超过 78 个字符(不包括 CRLF)。
您观察到的新行称为“标题折叠”。这仅用于遵守线路的长度限制。接收者站点上的适当用户代理将理解这个概念并展开线路。另请参见第 2.2.3 节。
我需要它在一行中。
您可能应该修复要求这是一行的代码,因为它对邮件的工作方式做出了错误的假设。
而且,查看 Email::MIME 的代码,我认为这种行为是硬编码的,无法通过一些简单的设置来更改。
使用两个命名输入参数调用该对象方法:charset 和 header_name_length ...
header_name_length与标题行的长度无关。它仅用于指定“名称:值”中标头名称的长度,以便它不会被编码,而只会被编码。