{ "type": 3, "encoding": 3, "ifsubtype": 1, "subtype": "VND.MS-EXCEL", "ifdescription": 0, "ifid": 0, "bytes": 158344, "ifdispositon": 1, "disposition": "attachment", "ifdparameters": 1, "dparameters": [ { "attribute": "filename", "value": "=?GBK?Q?EQ=3Ffor=3FY578B-1&ampY578B-2=B6=FE=BF=EE=BA=CF=C6=B4&?= =?GBK?Q?nbsp&nbsp=3FJ008798H04A0=3F4281=3F.xls?=" } ], "ifparameters": 1, "parameters": [ { "attribute": "name", "value": "=?GBK?Q?EQ=3Ffor=3FY578B-1&ampY578B-2=B6=FE=BF=EE=BA=CF=C6=B4&?= =?GBK?Q?nbsp&nbsp=3FJ008798H04A0=3F4281=3F.xls?=" } ] }
上图是其中一个附件,使用 mb_decode_mimeheader 获取不到真正的文件名,未正确解码的都被标记为 ? ,结果如下:
"EQ?for?Y578B-1&ampY578B-2 二款合拼&nbsp&nbsp?J008798H04A0?4281?.xls"
其中 ? 其实是下划线 _
所以请问如何能获取到正确的文件名?
1 Rache1 2022-08-19 11:05:44 +08:00 源文件名是啥呀,不然怎么判断解出来的是不是对得上 |
2 s609926202 OP @Rache1 文件名正确是这个:EQ_for_Y578B-1&Y578B-2 二款合拼 _J008798H04A0_4281_.xls |
![]() | 3 reter 2022-08-19 12:44:17 +08:00 via Android 搜索了一下,rfc 2047 规定了邮件里面如何表达非 ascii 编码的文本,你发的文字就是经过 rfc 2047 规则编码的文本。我不懂 php ,但是 https://www.php.net/manual/en/function.imap-mime-header-decode.php 好像可以用 |