IMAP, POP3, NNTP
IMAP, POP3, NNTP
메일함을 읽고 쓰는 코드를 직접 짜다 보면 IMAP, POP3, NNTP 같은 프로토콜에 손대게 돼요. PHP의 IMAP 확장이 이런 프로토콜 및 로컬 메일함 접근을 지원해 줘요. 다만 PHP 8.4.0부터 deprecated·unbundled 되었다는 점을 먼저 짚어둘게요.
본문
IMAP 관련 함수들은 IMAP 프로토콜뿐 아니라 NNTP, POP3, 그리고 로컬 메일함 접근 방법까지 다룰 수 있게 해 줘요.
주의할 점이 몇 가지 있어요.
- 일부 IMAP 함수는 POP 프로토콜과는 제대로 동작하지 않아요.
- IMAP 확장은 스레드 안전(thread-safe)하지 않아요. ZTS 빌드에서는 사용하지 않는 게 좋아요.
- 이 확장은 PHP 8.4.0부터 DEPRECATED(폐기) 및 UNBUNDLED(코어에서 분리) 처리되었어요.
IMAP 함수들
imap_8bit— 8비트 문자열을 quoted-printable 문자열로 변환imap_alerts— 발생한 모든 IMAP 경고 메시지 반환imap_append— 지정된 메일함에 문자열 메시지 추가imap_base64— BASE64 인코딩된 텍스트 디코딩imap_binary— 8비트 문자열을 base64 문자열로 변환imap_body— 메시지 본문 읽기imap_bodystruct— 특정 메시지의 지정된 본문 섹션 구조 읽기imap_check— 현재 메일함 확인imap_clearflag_full— 메시지의 플래그 지우기imap_close— IMAP 스트림 닫기imap_create—imap_createmailbox의 별칭imap_createmailbox— 새 메일함 생성imap_delete— 현재 메일함에서 메시지를 삭제 대상으로 표시imap_deletemailbox— 메일함 삭제imap_errors— 발생한 모든 IMAP 오류 반환imap_expunge— 삭제 표시된 모든 메시지 삭제imap_fetch_overview— 주어진 메시지 헤더 정보의 개요 읽기imap_fetchbody— 메시지 본문의 특정 섹션 가져오기imap_fetchheader— 메시지의 헤더 반환imap_fetchmime— 메시지 특정 섹션의 MIME 헤더 가져오기imap_fetchstructure— 특정 메시지의 구조 읽기imap_fetchtext—imap_body의 별칭imap_gc— IMAP 캐시 정리imap_get_quota— 메일함별 할당량 수준 설정과 사용 통계 조회imap_get_quotaroot— 사용자별 할당량 설정 조회imap_getacl— 주어진 메일함의 ACL 가져오기imap_getmailboxes— 메일함 목록을 읽어 각각의 상세 정보 반환imap_getsubscribed— 구독한 모든 메일함 목록imap_header—imap_headerinfo의 별칭imap_headerinfo— 메시지의 헤더 읽기imap_headers— 메일함의 모든 메시지 헤더 반환imap_is_open— IMAP 스트림이 여전히 유효한지 확인imap_last_error— 이 페이지 요청 중 발생한 마지막 IMAP 오류 가져오기imap_list— 메일함 목록 읽기imap_listmailbox—imap_list의 별칭imap_listscan— 주어진 텍스트와 일치하는 메일함 목록 반환imap_listsubscribed—imap_lsub의 별칭imap_lsub— 구독한 모든 메일함 목록imap_mail— 이메일 메시지 보내기imap_mail_compose— 주어진 envelope와 본문 섹션을 기반으로 MIME 메시지 생성imap_mail_copy— 지정된 메시지를 메일함으로 복사imap_mail_move— 지정된 메시지를 메일함으로 이동imap_mailboxmsginfo— 현재 메일함에 대한 정보 가져오기imap_mime_header_decode— MIME 헤더 요소 디코딩imap_msgno— 주어진 UID에 대한 메시지 시퀀스 번호 가져오기imap_mutf7_to_utf8— 수정된 UTF-7 문자열을 UTF-8로 디코딩imap_num_msg— 현재 메일함의 메시지 수 가져오기imap_num_recent— 현재 메일함의 최근 메시지 수 가져오기imap_open— 메일함에 IMAP 스트림 열기imap_ping— IMAP 스트림이 여전히 활성인지 확인imap_qprint— quoted-printable 문자열을 8비트 문자열로 변환imap_rename—imap_renamemailbox의 별칭imap_renamemailbox— 이전 메일함을 새 메일함으로 이름 변경imap_reopen— 새 메일함으로 IMAP 스트림 다시 열기imap_rfc822_parse_adrlist— 주소 문자열 파싱imap_rfc822_parse_headers— 문자열에서 메일 헤더 파싱imap_rfc822_write_address— 메일함·호스트·개인 정보가 주어졌을 때 올바른 형식의 이메일 주소 반환imap_savebody— 특정 본문 섹션을 파일로 저장imap_scan—imap_listscan의 별칭imap_scanmailbox—imap_listscan의 별칭imap_search— 주어진 검색 조건과 일치하는 메시지 배열 반환imap_set_quota— 주어진 메일함에 할당량 설정imap_setacl— 주어진 메일함의 ACL 설정imap_setflag_full— 메시지에 플래그 설정imap_sort— 메시지 정렬 가져오기imap_status— 메일함의 상태 정보 반환imap_subscribe— 메일함 구독imap_thread— 스레드된 메시지 트리 반환imap_timeout— IMAP 타임아웃 설정 또는 가져오기imap_uid— 주어진 메시지 시퀀스 번호에 대한 UID 반환imap_undelete— 삭제 표시된 메시지의 표시 해제imap_unsubscribe— 메일함 구독 해제imap_utf7_decode— 수정된 UTF-7 인코딩 문자열 디코딩imap_utf7_encode— ISO-8859-1 문자열을 수정된 UTF-7 텍스트로 변환imap_utf8— MIME 인코딩된 텍스트를 UTF-8로 변환imap_utf8_to_mutf7— UTF-8 문자열을 수정된 UTF-7로 인코딩
IMAP\Connection 클래스
IMAP\Connection— IMAP\Connection 클래스
더 알아보기
- IMAP은 서버 연결을 유지하는 스트림 기반으로 동작해요. 연결 하나를 만들고 여러 메일함 작업을 수행한 뒤
imap_close()로 정리하는 흐름이 일반적이에요.