[Gmail API] Javaで送信者エイリアスを取得する

Gmail API v1（Java）を使用して、
Gmailの送信者エイリアスを取得する方法
についてご紹介します。

**送信者エイリアスとは**
メールを送信する時、送信者エイリアスからメールを送信しているように見せることができる機能です。
最初に、メール転送を設定してアクティブにしておきます。
Gmailでは、「設定」 -> 「アカウントとインポート」 -> 名前:「他のメールアドレスを追加」
から設定できます。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/28614d1d-afb5-e31e-354b-2bd786b93ba0.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.SendAs sendAs = settings.sendAs();
    Gmail.Users.Settings.SendAs.List list = sendAs.list("メールアドレス");
    
    ListSendAsResponse res = list.execute();
    System.out.println(res);
}
```
#### 1.2.1. HTTPリクエスト
GET:　https:\//gmail.googleapis.com/gmail/v1/users/{メールアドレス}/settings/sendAs
が実行されます。

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

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

#### ListSendAsResponse

|メソッド|戻り値|説明|
|---|---|---|
|getSendAs|[SendAs](#sendas)|送信者エイリアスのリスト|

#### SendAs

|メソッド|戻り値|説明|
|---|---|---|
|getSendAsEmail|String|送信者エイリアスメールアドレス|
|getDisplayName|String|エイリアスを使用して送信されるメールの「From:」ヘッダーに表示される名前
|getReplyToAddress|String|エイリアスを使用して送信されるメールの「Reply-To:」ヘッダーに含まれるメールアドレス|
|getSignature|String|GmailウェブUIでエイリアスを使用して作成されたメッセージに含まれるオプションのHTML署名|
|getIsPrimary|Boolean|アカウントへのログインに使用されるプライマリアドレスか|
|getIsDefault|Boolean|新しいメッセージの作成や休暇中の自動返信の送信などの状況で、このアドレスがデフォルトの「From:」アドレスとして選択されるか|
|getTreatAsAlias|Boolean|ユーザーのプライマリメールアドレスのエイリアスとして扱うか|
|getSmtpMsa|[SmtpMsa](#smtpmsa)|エイリアスを使用して送信されるメールの送信リレーとして使用されるオプションのSMTPサービス|
|getVerificationStatus|[VerificationStatus(enum)](#verificationstatus)|送信エイリアスとして使用できるかどうかの検証状態|

#### SmtpMsa

|メソッド|戻り値|説明|
|---|---|---|
|getHost|String|SMTPサービスのホスト名|
|getPort|Integer|SMTPサービスのポート
|getSecurityMode|[SecurityMode(enum)](#securitymode)|SMTPサービスとの通信を保護するために使用されるプロトコル|

#### VerificationStatus

|定義値|内容|
|---|---|
|verificationStatusUnspecified|未設定|
|accepted|このアドレスは、送信エイリアスとして使用する準備完了|
|pending|住所は所有者による確認を持っている|

#### SecurityMode

|定義値|内容|
|---|---|
|securityModeUnspecified|未設定|
|none|リモートSMTPサービスとの通信は安全ではない|
|ssl|リモートSMTPサービスとの通信は、SSLを使用して保護|
|starttls|リモートSMTPサービスとの通信は、STARTTLSを使用して保護|


## 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.SendAs sendAs = settings.sendAs();
    Gmail.Users.Settings.SendAs.Get get = sendAs.get("メールアドレス","送信者エイリアスメールアドレス");
    
    SendAs res = get.execute();
    System.out.println(res);
}
```
#### 2.2.1. HTTPリクエスト
GET:　https:\//gmail.googleapis.com/gmail/v1/users/{メールアドレス}/settings/sendAs/{送信者エイリアスメールアドレス}
が実行されます。

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

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

#### SendAs

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

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