【PHP】Gmail API로 메일 받기
소개
Gmail API 참조는 모두 영어이므로 읽는 데 시간이 걸리고 어려움을 겪었으므로 일본어 메모에 남겨 둡니다.
공식 문서
Gmail API
클래스 Google_Service_Gmail_Message
↑ 여러가지 클래스가 있으므로, 원하는 메소드가 이미 존재하고 있을지도 모릅니다. 먼저 원하는 기능이 구현되지 않았는지 알아봅시다.
이전 준비
Gmail API
클래스 Google_Service_Gmail_Message
↑ 여러가지 클래스가 있으므로, 원하는 메소드가 이미 존재하고 있을지도 모릅니다. 먼저 원하는 기능이 구현되지 않았는지 알아봅시다.
이전 준비
빠른 시작
1. [ENABLE THE GMAIL API] 버튼을 클릭
클릭하면 아래와 같은 창이 나오므로 [DOWNLOAD CLIENT CONFIGURATION]
라는 버튼을 클릭
credentials.json
라는 파일이 다운로드되므로 작업 디렉토리로 파일을 이동합니다.
2. Google Client 라이브러리 설치
$ composer require google/apiclient:^2.0
3. 샘플 생성
$ composer require google/apiclient:^2.0
quickstart.php
라는 파일을 만듭니다 4. 샘플 실행 && 계정 인증
$ php quickstart.php
4-a. 터미널에 링크 대상이 표시되므로 복사하여 브라우저에서 표시
4-b. 화면에 따라 계정 인증하기
4-c. 인증 코드가 표시되므로 복사
4-d. 터미널에 붙여넣고 Enter
5. 인증 성공! 라벨 목록이 표시됩니다.
이후에는 작업 디렉토리에 추가된
token.json
를 로드하여 인증하므로 일일이 Google 계정을 인증할 필요가 없습니다.php quickstart.php
시도한 다음 다시 실행하자마자 이메일 레이블 목록이 나타납니다.6. 메일 목록 얻기
quickstart.php
// さっき認証に使用した quickstart.php に追記します。
// 検索条件を追加することができます。
$optParams = array(
'maxResults' => '最大取得件数',
'labelIds' => 'ラベルのID', // ラベルのidはlistUsersLabels()で取得可能。
'pageToken' => 'ページトークン',
// Gmailのメール検索時の形式で条件を指定できます。
'q' => 'from:[email protected] after:2018-02-20',
);
// 条件に当てはまるメールの一覧を取得します。
$messages = $service->users_messages->listUsersMessages($user, $optParams);
// メッセージIDからメールの内容を取得します。
foreach($messages->getMessages as $message) {
$message_id = $message->getID();
$message_contents = $service->users_messages->get($user, $message_id);
print_r($message_contents);
}
7. 메모
메일의 본문은 상기의 코드라고
$message_contents['payload']['body']['data']
에 있습니다만, URL 세이프 처리가 걸려져 있으므로 디코드할 필요가 있습니다.$body = $message_contents['payload']['body']['data'];
$body = str_replace(array('-', '_'), array('+', '/'), $body);
$body = base64_decode($body);
로 디코딩할 수 있습니다.
Reference
이 문제에 관하여(【PHP】Gmail API로 메일 받기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nagimaruxxx/items/39cfd50491cd16a45c47텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)