Пытаюсь получить прикрепленные файлы к письму. Обычно названия файлов или не кодируются или кодируются в виде:
public 'attribute' => string 'FILENAME' (length=8)
public 'value' => string '=?UTF-8?B?0LfQsNC60L7QvdGLLnR4dA==?=' (length=36)
Но также нашел письмо в котором имя файла в виде:
public 'value' => string 'UTF-8''%D0%9F%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D1%87%D0%BD' (length=61)
imap_mime_header_decode($value) в этом случае не помогает.
Я вижу что эту строку можно разбить по '' и применить urldecode, но боюсь что это может сломать названия файлов которые так не закодированы.
Полный дамп части письма полученное из imap_fetchbody():
object(stdClass)[56]
public 'type' => int 3
public 'encoding' => int 3
public 'ifsubtype' => int 1
public 'subtype' => string 'OCTET-STREAM' (length=12)
public 'ifdescription' => int 0
public 'ifid' => int 0
public 'bytes' => int 55350
public 'ifdisposition' => int 1
public 'disposition' => string 'ATTACHMENT' (length=10)
public 'ifdparameters' => int 1
public 'dparameters' =>
array (size=2)
0 =>
object(stdClass)[33]
public 'attribute' => string 'FILENAME*0*' (length=11)
public 'value' => string 'UTF-8''%D0%9F%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D1%87%D0%BD' (length=61)
1 =>
object(stdClass)[22]
public 'attribute' => string 'FILENAME*1*' (length=11)
public 'value' => string '%D0%BE%D0%B5%20%D0%BC%D0%B5%D0%BD%D1%8E%20-%20%E2%84%961.doc' (length=60)
public 'ifparameters' => int 1
public 'parameters' =>
array (size=2)
0 =>
object(stdClass)[20]
public 'attribute' => string 'NAME*0*' (length=7)
public 'value' => string 'UTF-8''%D0%9F%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D1%87%D0%BD%D0' (length=64)
1 =>
object(stdClass)[53]
public 'attribute' => string 'NAME*1*' (length=7)
public 'value' => string '%BE%D0%B5%20%D0%BC%D0%B5%D0%BD%D1%8E%20-%20%E2%84%961.doc' (length=57)
Часть исходника письма:
--=_3318071e8a22163e63d59b7e832d6cf5
Content-Transfer-Encoding: base64
Content-Type: application/octet-stream;
name*0*=UTF-8''%D0%9F%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D1%87%D0%BD%D0;
name*1*=%BE%D0%B5%20%D0%BC%D0%B5%D0%BD%D1%8E%20-%20%E2%84%961.doc
Content-Disposition: attachment;
filename*0*=UTF-8''%D0%9F%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D1%87%D0%BD;
filename*1*=%D0%BE%D0%B5%20%D0%BC%D0%B5%D0%BD%D1%8E%20-%20%E2%84%961.doc
0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAASgAAAAAAAAAA
EAAATAAAAAEAAAD+////AAAAAEkAAAD/////////////////////////////////////////////