PHP에서 서버에 이메일 첨부 파일을 저장하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/162576

  •  03-07-2019
  •  | 
  •  

문제

나는 이틀의 더 나은 부분을 위해 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 메시지를 현명한 데이터 구조로 구문 분석 할 수 있다고 생각합니다.

http://framework.zend.com/manual/en/zend.mail.read.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top