我正在使用Mail :: IMAPClient从imap服务器检索邮件头.它很棒.但是当标题包含[az | AZ | 0-9]以外的任何字符时,我的字符串看起来像这样:
主题:取消消息en =?UTF-8?B?ZnJhbsOnYWlzIMOgIGxhignvbg ==?=(原始字符串:"Un messageenfrançaisàlacon")
体:= C3 = A9aeio = C3 = B9 = C3 = A8 = C3 = A8(原始字符串:éaeioùèè)
hob*_*bbs 14
正文编码是Quoted-Printable; 标题(主题)编码是MIME"encoded-word"编码(base64的"B"类型).处理这两种方法的最佳方法是将电子邮件传递到能够处理MIME的模块,例如Email :: MIME或较旧和较大的MIME :: Lite.
例如:
# $message was retrieved from IMAP
my $mime = Email::MIME->new($message);
my $subject = $mime->header('Subject'); # automatically decoded
my $body = $mime->body_str; # also automatically decoded
Run Code Online (Sandbox Code Playgroud)
但是,如果您需要在整个消息的上下文之外处理它们,还有像Encode :: MIME :: Header和MIME :: QuotedPrint这样的模块.
| 归档时间: |
|
| 查看次数: |
371 次 |
| 最近记录: |