nodemailerでGmailのエイリアスのアドレスから送信できるようにする

以下ページの転載になります。ご了承ください。

[nodemailerでGmailのエイリアスのアドレスから送信できるようにする - Yuto Hongo Portfolio](https://hongo.dev/blog/nodemailer-send-emails-using-alias-address-for-gmail)

----

2020/07 時点での記事となります。

G Suite前提での手順となってしまいますが、参考になればと思います。

----

[<u>ひとことでいうとこんな記事</u>]

nodemailerからメール送信する際、自分の所持しているメルアドを利用せずにエイリアス（Info@, sales@ 等）のアドレスからの送信が可能です！

----

[<u>こんな人におすすめ</u>]

- メディアを作ることになったが、お問い合わせの自動返信機能で個人アドレスを使うわけにはいかない人

----

[<u>目次</u>]

- 参考記事
- 手順1. Google OAuth 2.0 設定
- 手順2. G Suite で エイリアスアドレスの追加
- 手順3. Gmail で エイリアスアドレスの追加・デフォルト設定
- 手順4. nodemailerでメール送信スクリプトを作成
- まとめ

----

## 参考記事

参考にさせていただいた記事です。ありがとうございます。

[node.js 上の nodemailer で OAuth 2.0 を使って gmail からメールを送る](https://gist.github.com/neguse11/bc09d86e7acbd6442cd4)

そして、nodemailerでのエイリアスアドレスでの送信に関してはstackoverflowのコメント欄を参考に設定をいたしました

[Nodemailer send emails using original user account instead of alias](https://stackoverflow.com/questions/34628729/nodemailer-send-emails-using-original-user-account-instead-of-alias)

## 手順1. Google OAuth 2.0 設定

### 1-1 Google APIs でプロジェクト作成

1. [Google APIs](https://console.developers.google.com/apis/dashboard) ページで、「プロジェクトを作成」をクリック。（もしくは、プロジェクト選択タブをクリックし「新しいプロジェクト」をクリック）
2. 「プロジェクト名」を入力し、「作成」をクリック。

![nodemailer-send-emails-using-alias-address-for-gmail.001](//images.ctfassets.net/yyxwl1h0rr37/26kKmXIxiEpdFb29VTw1i1/c2e7dbf8b2e54206df60b81b47320775/nodemailer-send-emails-using-alias-address-for-gmail.001.png?w=720&q=20)

### 1-2 OAuth 同意画面 の設定

1. 「OAuth 同意画面」をクリック
2. 「アプリケーション名」を入力
3. 「保存」をクリック

![nodemailer-send-emails-using-alias-address-for-gmail.002](//images.ctfassets.net/yyxwl1h0rr37/7IIjRJtiwn5xFlMpjSmPsH/4f3d5b7fa8e808adad66bc364c2823f0/nodemailer-send-emails-using-alias-address-for-gmail.002.png?w=720&q=20)

### 1-3 OAuth 2.0 クライアントIDの作成
1. 「認証情報」をクリック
2. 「認証情報を作成」をクリックし、「OAuth クライアント ID」を選択
3. 「アプリケーションの種類」で「Webアプリケーション」を選択し、「名前」を入力

![nodemailer-send-emails-using-alias-address-for-gmail.003](//images.ctfassets.net/yyxwl1h0rr37/1J4wj7a2Ie5HSwsG1ejaPa/054b44e7b7281b1042cea690e08f798c/nodemailer-send-emails-using-alias-address-for-gmail.003.png?w=720&q=20)

<u>**クライアントID**</u>と<u>**クライアントシークレット**</u>が表示されるので、保存しておく。

![nodemailer-send-emails-using-alias-address-for-gmail.004](//images.ctfassets.net/yyxwl1h0rr37/uUROobCDcJjDC8R0WM9ey/cdbaf7640d0d24697d41bb023a2acdc3/nodemailer-send-emails-using-alias-address-for-gmail.004.png?w=720&q=20)

### 1-4 Gogle Developers OAuth 2.0 Playground で Reflesh Token の取得

1. [Google Developers OAuth 2.0 Playground](https://developers.google.com/oauthplayground/)ページを開く
2. 右上の「⚙歯車ボタン」をクリックする
3. 以下のような情報を入力する

 ![nodemailer-send-emails-using-alias-address-for-gmail.005](//images.ctfassets.net/yyxwl1h0rr37/3oJXgBQya0YV5Lkd7hcgBP/0e405bf152a7d24c3d5a1359f99eac7f/nodemailer-send-emails-using-alias-address-for-gmail.005.png?w=720&q=20)

|項目|値|
|:----|:----|
|OAuth flow|Server-side|
|OAuth endpoints|Google|
|Authorization endpoint|そのまま (https://accounts.google.com/o/oauth2/v2/auth)|
|Token endpoint|そのまま (https://oauth2.googleapis.com/token)|
|Access token location|Authorization header w/ Bearer prefix|
|Access type|Offline|
|Force approval prompt|No|
|Use your own OAuth credentials|チェックボックスをクリック|
|OAuth Client ID|さきほど取得した <u>**クライアントID**</u>|
|OAuth Client secret|さきほど取得した <u>**クライアントシークレット**</u>|


4. 「Step 1」を選択
5. 「Input your own scopes」に「 https://mail.google.com/ 」を入力し「Authorize APIs」を押す
6. 「Google OAuth 2.0 Playground に移動」と表示されるので、対象のGoogleアカウントを選択
7. 「Google OAuth 2.0 Playground が Google アカウントへのアクセスをリクエストしています」と表示されるので「許可」を選択
  ![nodemailer-send-emails-using-alias-address-for-gmail.006](//images.ctfassets.net/yyxwl1h0rr37/5C2VSnrVpfjszSUTqzfUsZ/b39c03373980ca3b69061f490d735ed3/nodemailer-send-emails-using-alias-address-for-gmail.006.png?w=720&q=20)
  
8. 「Step 2」に進んだら「Exchange authorization code for tokens」を押す
9. <u>**Reflesh token**</u>が表示されるので、保存しておく
 ![nodemailer-send-emails-using-alias-address-for-gmail.007](//images.ctfassets.net/yyxwl1h0rr37/1b9W4rROtacxRDhXo7uQIs/edf3f833cb634ac8721b700710c198f6/nodemailer-send-emails-using-alias-address-for-gmail.007.png?w=720&q=20)

## 手順2. G Suite で エイリアスアドレスの追加
### 2-1 Google管理コンソール

1. [Google Admin](https://admin.google.com/ac/home)にアクセスし、「ユーザー」をクリック

### 2-2 ユーザーに紐づくエイリアスアドレスを作成

1. 先程**<u>手順１を行ったGmailアカウント</u>**をクリック
2. 「ユーザー情報」をクリック
3. 「メールエイリアス」をクリックし、エイリアス名を入力したら「保存」を押す

![nodemailer-send-emails-using-alias-address-for-gmail.008](//images.ctfassets.net/yyxwl1h0rr37/2WpOlMHFPfw6wpawPALgUb/89384d56a9f38ab86161a09dc666824d/nodemailer-send-emails-using-alias-address-for-gmail.008.png?w=720&q=20)

## 手順3. Gmail で エイリアスアドレスの追加・デフォルト設定

### 3-1 エイリアスアドレスの追加・認証

1. Gmail右上の「歯車ボタン」を押し、「すべての設定を表示」を押す
2. 「アカウント」タブをクリックする
3. 「名前」の欄に「他のメールアドレスを追加」とあるのでクリック
4. 「エイリアスとして扱います」にチェックをつけ、「名前」と**<u>手順2で準備したエイリアスのアドレス</u>**を入力
5. 確認メールでの認証が必要といわれるので、「確認メールの送信」をクリック
6. 届いた確認メールのリンクをクリックするか、確認コードを入力し「確認」をクリック

![nodemailer-send-emails-using-alias-address-for-gmail.009](//images.ctfassets.net/yyxwl1h0rr37/2pcgaxskQ3mlWHVNXusZSa/7b3ad8073e900aadc29967905fc7126d/nodemailer-send-emails-using-alias-address-for-gmail.009.png?w=720&q=20)

### 3-2 エイリアスアドレスを送信メールのデフォルトに設定

1. Gmailの設定画面に戻ると**<u>3-1で設定されたエイリアスアドレス</u>**が追加されています
2. エイリアスアドレスのほうを**「デフォルトに設定」**をクリックする

（※これがないと、nodemailerで送信した際に、エイリアスのアドレスから送信されたことにならず、元のアドレスからの送付となってしまいます。）

## 手順4. nodemailerでメール送信スクリプトを作成
### 4-0 手順1で準備したものの確認
- **Client ID**
- **Client Secret**
- **Reflesh Tken**

### 4-1 nodemailerのpackageをインストール

1. `npm` でも `yarn` でも

### 4-2 OAuthの情報をnodemailerに準備

```typescript
const nodemailer = require('nodemailer')

const auth = {
  type: 'OAuth2',
  user: 'alias@adress', // エイリアスのアドレス
  clientId: 'clientId', // Client ID
  clientSecret: 'clientSecret', // Client Secret
  refreshToken: 'refleshToken', // Reflesh Token
}

const transporter = nodemailer.createTransport({
  service: 'gmail',
  auth
})
```


### 4-3 メール情報を準備・メール送信

```typescript
const mailOptions = {
  from: `エイリアス <alias@mail.com>`, // エイリアスのアドレスと名前
  to: `send_to@mail.com`, // TO
  bcc: `blind@mail.com`, // BCC
  subject: `Subject`, // タイトル
  text: `text` // 本文
}

transporter.sendMail(mailOptions)
```


## まとめ

以上の方法で、エイリアスのメールアドレスを用いたnodemailerの送信が可能になりました。

ガッツリとシステムを組む場合にはこのような手法をとらないような気もしますが、スモールビジネスで小さくはじめたい方などは、Googleのようなプラットフォームにのっかるのも手ではないでしょうか？

最終的に Firebase Functions にメール送信は任せたいと思います。