[Gmail API] Javaで転送アドレスを取得する

Gmail API v1（Java）を使用して、
Gmailのメールボックス内の転送アドレスを取得する方法
についてご紹介します。

**転送アドレスとは**
受信したメールを設定したメールアドレスへそのまま送る機能です。
Gmailでは、「設定」 -> 「メール転送とPOP/IMAP」 -> 「転送先アドレスを追加」
から設定できます。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/b748f73a-9c88-fec0-96ac-360215596642.png">

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Gmail API] JavaでGmail APIを使う](https://qiita.com/doran/items/a078e966bfd93c4b19c2)
を参照ください。
:::

本文中の引数にある「メールアドレス」の指定は、
OAuth 2.0使用の場合は「me」（自身）と指定してください。
「me」は認証されたユーザーを示します。

|No||目次|
|---|---|---|
|1||[転送アドレス一覧を取得](#1-転送アドレス一覧を取得)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[転送アドレスを取得](#2-転送アドレスを取得)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|


## 1. 転送アドレス一覧を取得
メールボックス内の転送アドレス一覧を取得します。

一覧の取得では転送アドレスの詳細内容までは取得できません。
詳細内容を取得したい場合は[2. 転送アドレスを取得](#2-転送アドレスを取得)を参照ください。

### 1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
```
GmailScopes.GMAIL_SETTINGS_BASIC
GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_READONLY
```
[⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)](https://qiita.com/doran/items/a078e966bfd93c4b19c2#22-gmailインスタンスを取得)
でスコープを指定してください。

### 1.2. 実行
転送アドレスがない場合はレスポンスでNULLが返ります。

```java
public static void main(String[] args) throws Exception{
    Gmail gmail = getGmail();
    Gmail.Users users = gmail.users();
    Gmail.Users.Settings settings = users.settings();
    
    Gmail.Users.Settings.ForwardingAddresses forwardingAddresses = settings.forwardingAddresses();
    Gmail.Users.Settings.ForwardingAddresses.List list = forwardingAddresses.list("メールアドレス");

    ListForwardingAddressesResponse res = list.execute();
    System.out.println(res);
}
```
#### 1.2.1. HTTPリクエスト
GET:　https:\//gmail.googleapis.com/gmail/v1/users/{メールアドレス}/settings/forwardingAddresses
が実行されます。

#### 1.2.2. クエリパラメータ
クエリパラメータはありません。

### 1.3. レスポンスの内容

#### ListForwardingAddressesResponse

|メソッド|戻り値|説明|
|---|---|---|
|getForwardingAddresses|List\<[ForwardingAddress](#forwardingaddress)\>|転送に使用できるアドレスのリスト|

#### ForwardingAddress

|メソッド|戻り値|説明|
|---|---|---|
|getForwardingEmail|String|転送メールアドレス|
|getVerificationStatus|[VerificationStatus(enum](#verificationstatus)|このアドレスが検証されており、転送に使用できるかどうか|

#### VerificationStatus

|定義値|内容|
|---|---|
|verificationStatusUnspecified|未設定|
|accepted|このアドレスは転送に使用する準備済み|
|pending|住所は所有者による確認待ち|

## 2. 転送アドレスを取得
転送アドレスを取得します。

### 2.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
```
GmailScopes.GMAIL_SETTINGS_BASIC
GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_READONLY
```
[⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)](https://qiita.com/doran/items/a078e966bfd93c4b19c2#22-gmailインスタンスを取得)
でスコープを指定してください。

### 2.2. 実行
```java
public static void main(String[] args) throws Exception{
    Gmail gmail = getGmail();
    Gmail.Users users = gmail.users();
    Gmail.Users.Settings settings = users.settings();
    
    Gmail.Users.Settings.ForwardingAddresses forwardingAddresses = settings.forwardingAddresses();
    Gmail.Users.Settings.ForwardingAddresses.Get get = forwardingAddresses.get("メールアドレス","転送メールアドレス");
    
    ForwardingAddress res = get.execute();
    System.out.println(res);
}
```
#### 2.2.1. HTTPリクエスト
GET:　https:\//gmail.googleapis.com/gmail/v1/users/{メールアドレス}/settings/forwardingAddresses/{転送メールアドレス}
が実行されます。

#### 2.2.2. クエリパラメータ
クエリパラメータはありません。

### 2.3. レスポンスの内容

#### ForwardingAddress

[1.3. レスポンスの内容(ForwardingAddress)](#forwardingaddress)の内容と同じです。

<br>
<br>
おしまい。。