Я работаю над функциями чтения электронной почты PHP в течение большей части двух дней. Я пишу скрипт для чтения писем из почтового ящика и сохранения любых вложений на сервере. Если вы когда-либо делали что-то подобное, вы могли бы понять мою боль: PHP не очень хорошо работает с электронной почтой!Как сохранить вложения электронной почты на сервер в PHP?
Я подключился к POP3-серверу, и я могу выполнять итерацию файлов. Вот приблизительный контур кода:
if (!$mbox = imap_open ("{myserver.com:110/pop3/notls}INBOX", "u", "p"))
die ('Cannot connect/check mail! Exiting');
if ($hdr = imap_check($mbox))
$msgCount = $hdr->Nmsgs;
else
die ("Failed to get mail");
foreach ($overview as $message) {
$msgStruct = imap_fetchstructure($mbox, $message->msgno);
// if it has parts, there are attachments that need reading
if ($msgStruct->parts) {
foreach ($msgStruct->parts as $key => $part) {
switch (strtoupper($part->subtype)) {
case 'GIF': case 'JPEG':case 'PNG':
//do something - but what?!
break;
}
}
}
}
Я отметил, где я застрял. Я могу использовать imap_fetchbody($mbox, $message->msgno, $key+1)
но получает мне кучу данных, как это:
/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8S
EhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEU
Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAAR
CAHiAi0DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
...
Я привести к считаю, что это данные MIME. Мне нужно это как изображение! Я видел, как несколько классов бомбили по интернету, которые утверждают, что делают необходимое волшебство. Я не могу заставить их работать. Я не понимаю, почему я так сильно нахожу это!
Вкратце, я ищу что-то, что может превратить исходную строку MIME в реальные данные.
вы проверили, что это кодировка приложения? – kender 2008-10-02 14:28:27
эй вы можете опубликовать более полный фрагмент? я не могу заставить его работать bc im not sure where $ overview is from – st4ck0v3rfl0w 2010-02-19 02:58:33
У меня такая же проблема, как у вас. Я нашел хорошую статью, и я думаю, что это может вам помочь http://www.linuxscope.net/articles/mailAttachmentsPHP.html наслаждайтесь этим :) – Hassan 2011-09-15 12:43:37