如何设置Email::MIME邮件头长度以避免自动换行?
解决Email::MIME邮件头自动换行问题
Email::MIME默认会对超过78字符的邮件头进行换行折叠,要禁用这个行为,可以通过自定义Email::MIME::Header对象来控制:
方法一:替换现有邮件的Header对象
先创建一个设置了max_length参数的Header实例,替换掉邮件默认的Header对象,后续设置的所有头都会遵循这个规则:
use Email::MIME; use Email::MIME::Header; # 初始化邮件对象(替换为你的实际创建逻辑) my $email = Email::MIME->create( body_str => '邮件内容', # 其他必要参数... ); # 创建自定义Header,max_length设为0表示不限制长度(不折叠) my $custom_header = Email::MIME::Header->new( [ $email->header_pairs ], # 保留原有的头信息 max_length => 0, ); # 替换邮件的Header对象 $email->header_obj($custom_header); # 此时再设置自定义头,就不会自动换行了 $email->header_str_set('some-label', @my_array);
方法二:创建邮件时直接指定自定义Header
如果是从头创建邮件,可以直接在create方法里指定header_objrings既屋,Shadow获取百分比接收 KB Em事物压ady一步到位:
use Email::MIME; use Email::MIME::Header; my $email = Email::MIME->create( header_obj => Email::MIME::Header->new( [], # 初始为空头 max_length => 0, ), body_str => '邮件内容', # 其他参数... ); # 后续正常设置头信息 $email->header_str_set('some-label', @my_array);
补充说明
你之前尝试的header_name_length_set方法不存在,因为这个参数是Email::MIME::Header的as_mime_string方法的参数,而非邮件对象的方法。通过控制Header对象的max_length属性,就能直接控制邮件头的折叠行为——设为0时无论内容多长都不会换行,也可以设为一个足够大的数值(比如1000)来适配你的需求。
内容的提问来源于stack exchange,提问作者FJCF
相关产品推荐
相关产品推荐

