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 데이터라고 믿게됩니다. 이미지로 필요합니다! 인터넷 주변에서 필요한 마법사를 주장하는 여러 수업이 폭격하는 것을 보았습니다. 나는 그들 중 누구도 일할 수 없습니다. 왜 그렇게 열심히 찾는 지 이해가 안 돼요!
요컨대, 나는 원시 마임 스트링을 실제 데이터로 바꿀 수있는 것을 찾고 있습니다.
해결책
PHP로 이메일을 처리하는 방법을 빠르게 찾았습니다. 여기.
그 페이지 하단에는 첨부 바디가 있습니다. echo
:
if (substr($ContentType,0,4) == "text") {
echo imap_qprint($fileContent);
} else {
echo imap_base64($fileContent);
}
나는 이것이 당신이 필요로하는 것 같아 ...
(편집 : 당신의 경우 이미지 인 경우 항상 if
부분. 물론 파일을 반향 대신 저장하십시오 :)
다른 팁
MIME 데이터는 Base-64 인코딩되어 있으므로 Base64_Decode를 사용하여 해독 할 수 있어야한다고 생각합니다.
당신은 사용할 수 있습니다 imap_base64
기능을하고 파일에 출력하거나 사용합니다. imap_savebody
Zend Framework에는 Zend_mail이 포함되어있어 메일 메시지를 훨씬 쉽게 읽을 수 있으며 Zend_mime은 Multipart Mime 메시지를 현명한 데이터 구조로 구문 분석 할 수 있다고 생각합니다.