수색…


IMAP 확장 프로그램 설치

PHP에서 IMAP 함수 를 사용하려면 IMAP 확장을 설치해야합니다.

데비안 / 우분투 PHP5

sudo apt-get install php5-imap
sudo php5enmod imap

데비안 / 우분투 PHP7

sudo apt-get install php7.0-imap

YUM 기반 배포판

sudo yum install php-imap

Mac OS X (php5.6 포함)

brew reinstall php56 --with-imap

사서함에 연결

IMAP 계정으로 무엇이든하려면 먼저 연결해야합니다. 이렇게하려면 몇 가지 필수 매개 변수를 지정해야합니다.

  • 메일 서버의 서버 이름 또는 IP 주소
  • 연결하려는 포트
    • IMAP은 143 또는 993 (보안)입니다.
    • POP는 110 또는 995 (보안)입니다.
    • SMTP는 25 또는 465 (보안)입니다.
    • NNTP는 119 또는 563 (보안)입니다.
  • 연결 플래그 (아래 참조)
깃발 기술 옵션 태만
/service=service 사용할 서비스 imap, pop3, nntp, smtp 잠잠하다
/user=user 서버 로그인을위한 원격 사용자 이름
/authuser=user 원격 인증 사용자; 지정된 경우이 암호가 사용되는 사용자 이름 (예 : administrator)
/anonymous 익명 사용자로의 원격 액세스
/debug 애플리케이션의 디버그 로그에 프로토콜 원격 측정 기록 장애인
/secure 네트워크를 통해 일반 텍스트 암호를 전송하지 않는다.
/norsh rsh 또는 ssh를 사용하여 사전 인증 된 IMAP 세션을 설정하지 마십시오.
/ssl Secure Socket Layer를 사용하여 세션을 암호화하십시오.
/validate-cert TLS / SSL 서버의 인증서 사용 가능
/novalidate-cert 서버가 자체 서명 된 인증서를 사용하는 경우 TLS / SSL 서버에서 인증서의 유효성을 검사하지 않습니다. 주의와 함께 사용하십시오 장애인
/tls 세션을 암호화하기 위해 start-TLS를 강제로 사용하고이를 지원하지 않는 서버에 대한 연결을 거부하십시오.
/notls 세션을 암호화하는 시작 TLS를 지원하지 않는 서버도 지원합니다.
/readonly 요청 읽기 전용 사서함 열기 (IMAP 전용, NNTP에서는 무시, SMTP 및 POP3에서는 오류)

연결 문자열은 다음과 같습니다.

{imap.example.com:993/imap/tls/secure}

연결 문자열의 문자가 ASCII가 아닌 경우 utf7_encode ($ string) 로 인코딩해야합니다.

메일 박스에 연결하기 위해 우리는 스트림을 가리키는 자원 값을 반환하는 imap_open 명령을 사용합니다 :

<?php
$mailbox = imap_open("{imap.example.com:993/imap/tls/secure}", "username", "password");
if ($mailbox === false) {
    echo "Failed to connect to server";
}

사서함의 모든 폴더 나열

사서함에 연결하면 내부를 살펴볼 수 있습니다. 첫 번째 유용한 명령은 imap_list 입니다. 첫 번째 매개 변수는 imap_open 에서 얻은 리소스이고 두 번째 매개 변수는 사서함 문자열이며 세 번째 매개 변수는 퍼지 검색 문자열입니다 ( * 는 모든 패턴과 일치시키는 데 사용됩니다).

$folders = imap_list($mailbox, "{imap.example.com:993/imap/tls/secure}", "*");
if ($folders === false) {
    echo "Failed to list folders in mailbox";
} else {
    print_r($folders);
}

출력은 다음과 유사해야합니다.

Array
(
    [0] => {imap.example.com:993/imap/tls/secure}INBOX
    [1] => {imap.example.com:993/imap/tls/secure}INBOX.Sent
    [2] => {imap.example.com:993/imap/tls/secure}INBOX.Drafts
    [3] => {imap.example.com:993/imap/tls/secure}INBOX.Junk
    [4] => {imap.example.com:993/imap/tls/secure}INBOX.Trash
)

세 번째 매개 변수를 사용하여 다음과 같은 결과를 필터링 할 수 있습니다.

$folders = imap_list($mailbox, "{imap.example.com:993/imap/tls/secure}", "*.Sent");

이제 결과에는 이름에 .Sent 가 포함 된 항목 만 포함됩니다.

Array
(
    [0] => {imap.example.com:993/imap/tls/secure}INBOX.Sent
)

참고 : * 를 퍼지 검색으로 사용하면 모든 일치가 반복적으로 반환됩니다. % 를 사용하면 지정한 현재 폴더의 일치 항목 만 반환됩니다.

사서함에서 메시지 찾기

imap_headers를 사용하여 메일함에있는 모든 메일 목록을 반환 할 수 있습니다.

<?php
$headers = imap_headers($mailbox);

결과는 다음과 같은 패턴의 문자열 배열입니다.

[FLAG] [MESSAGE-ID])[DD-MM-YYY] [FROM ADDRESS] [SUBJECT TRUNCATED TO 25 CHAR] ([SIZE] chars)

다음은 각 행의 모양을 보여주는 샘플입니다.

A     1)19-Aug-2016 [email protected] Message Subject (1728 chars)
D     2)19-Aug-2016 [email protected] RE: Message Subject (22840 chars)
U     3)19-Aug-2016 [email protected] RE: RE: Message Subject (1876 chars)
N     4)19-Aug-2016 [email protected] RE: RE: RE: Message Subje (1741 chars)
상징 깃발 의미
에이 답변 됨 메시지에 답장을 보냈습니다.
삭제됨 메시지가 삭제되었지만 삭제되지는 않았습니다.
에프 신고 됨 주의를 끌기 위해 메시지에 플래그가 지정되거나 쳐다 보입니다.
새로운 메시지가 새롭고 보이지 않았습니다.
아르 자형 충적세 메시지가 새롭고 보였습니다.
읽히지 않는 메시지를 읽지 못했습니다.
엑스 초안 메시지가 초안입니다.

이 호출은 실행하는 데 상당한 시간이 걸릴 수 있으며 매우 큰 목록을 반환 할 수 있습니다.

또 다른 방법은 필요에 따라 개별 메시지를로드하는 것입니다. 귀하의 이메일에는 각각 1 (가장 오래된 것)에서 imap_num_msg($mailbox) 까지의 ID가 할당됩니다.

전자 메일에 직접 액세스하는 데는 여러 가지 기능이 있지만 가장 간단한 방법은 구조화 된 헤더 정보를 반환하는 imap_header 를 사용하는 것입니다.

<?php
$header = imap_headerinfo($mailbox , 1);

stdClass Object
(
    [date] => Wed, 19 Oct 2011 17:34:52 +0000
    [subject] => Message Subject
    [message_id] => <04b80ceedac8e74$51a8d50dd$0206600a@user1687763490>
    [references] => <[email protected]>
    [toaddress] => Some One Else <[email protected]>
    [to] => Array
        (
            [0] => stdClass Object
                (
                    [personal] => Some One Else
                    [mailbox] => someonelse
                    [host] => example.com
                )
        )
    [fromaddress] => Some One <[email protected]>
    [from] => Array
        (
            [0] => stdClass Object
                (
                    [personal] => Some One
                    [mailbox] => someone
                    [host] => example.com
                )
        )
    [reply_toaddress] => Some One <[email protected]>
    [reply_to] => Array
        (
            [0] => stdClass Object
                (
                    [personal] => Some One
                    [mailbox] => someone
                    [host] => example.com
                )
        )
    [senderaddress] => Some One <[email protected]>
    [sender] => Array
        (
            [0] => stdClass Object
                (
                    [personal] => Some One
                    [mailbox] => someone
                    [host] => example.com
                )
        )
    [Recent] =>  
    [Unseen] =>  
    [Flagged] =>  
    [Answered] =>  
    [Deleted] =>  
    [Draft] =>  
    [Msgno] =>    1
    [MailDate] => 19-Oct-2011 17:34:48 +0000
    [Size] => 1728
    [udate] => 1319038488
)


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow