アララ メッセージAPIv2無料トライアルを使ってメール送信リクエストをしてみた

## はじめに
2023年1月26日に、メール配信システム アララメッセージに[「エンジニア向け メール配信API無料トライアル」](https://am.arara.com/news/apitrial_press)がリリースされました。
今回はこの無料トライアルを使って、登録からメール送信までの一連の流れを紹介します。

## アララメッセージとは
「アララ メッセージ」は、メール配信遅延や不達を改善するメール配信サービスです。
用途に合わせたメール配信APIが提供されており、今回紹介するAPI v2は製品購入時のサンクスメールや、発送通知メールなど、トランザクション配信に特化しています。

## API v2トライアル利用の注意点（利用規約から）
* 利用できる機能
    * メール配信予約・キャンセル
    * メール配信ステータス・結果取得
    * エラーフィルター登録情報取得・更新
* 30日間利用可能
* 個人利用は不可
* フリーで取得できるメールアドレス、キャリアドメインのメールアドレスなどでは登録できない
* 送信できる宛先は1日100件、登録したメールアドレスのドメインと同じドメインのみ
今回は紹介しませんが、上記の条件が一部緩和され、API以外の機能も利用できるトライアルも用意されています。


## 登録方法
こちらのサイトから登録します。
https://am.arara.com/service/engineer

「APIトライアルをはじめる」ボタンを押すと登録情報の入力を求められるので、入力して送信します。
![APIトライアル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125852/e7c91802-e9db-99ce-4220-9031ba0c6ab7.png)

早ければ2分くらいで登録したメールアドレスにAPIへの接続情報が送られてきます。
これで登録完了です。

送られてきた「接続先ドメイン」「クライアントID」「クライアントシークレット」はAPIに接続するために必要なので控えておきます。
![APIトライアルv2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125852/4dd6c14d-c1fd-dd0e-3986-56decdb491d5.png)


## メールを送信してみる
さっそくメールを送信してみます。今回使用するスクリプトはこちらです。

```shell:mailtest.sh
# メールで送られてきた接続情報を設定
DOMAIN='接続先ドメイン'
CLIENT_ID='クライアントID'
CLIENT_SECRET='クライアントシークレット'

# base64化する
AUTHORIZATION_BASE64=`/bin/echo -n $CLIENT_ID:$CLIENT_SECRET | base64`

# アクセストークンを取得する
TOKEN=`curl -X POST -H "Authorization:Basic ${AUTHORIZATION_BASE64}" -H 'Content-Type:application/x-www-form-urlencoded' -d 'grant_type=client_credentials' https://auth.$DOMAIN/oauth2/token | jq -r '.access_token'`

# ペイロードを作る
PAYLOAD=$(cat << EOT
{
 "delivery": [
   {
     "mailing-list": [
       {
         "to": {
           "address": "送信先メールアドレス",
           "device": 0
         }
       }
     ],
     "contents": {
       "subject": "メールタイトル",
       "body": {
         "text": "メール本文"
       }
     },
     "settings": {
       "send_time": "now",
       "from": {
         "name": "送信者名",
         "address": "送信者メールアドレス"
       }
     }
   }
 ]
}
EOT
)

# メール送信リクエスト
curl -X POST -H "Authorization:Bearer ${TOKEN}" -d "$PAYLOAD" https://$DOMAIN/send
```



各パートについて細かく解説します。

1\. メールで送られてきた接続情報を設定
先ほど控えた「接続先ドメイン」「クライアントID」「クライアントシークレット」を設定します。
```shell
# メールで送られてきた接続情報を設定
DOMAIN='接続先ドメイン'
CLIENT_ID='クライアントID'
CLIENT_SECRET='クライアントシークレット'
```


2\. base64化する
アクセストークンを得るための認証情報を作ります。クライアントID:クライアントシークレットの形でbase64化します。
```shell
# base64化する
AUTHORIZATION_BASE64=`/bin/echo -n $CLIENT_ID:$CLIENT_SECRET | base64`
```

3\. アクセストークンを取得する
先ほど作成した認証情報を使ってBearerトークンを取得します。成功すればJSON形式でトークン情報が返ってきます。ここではjqコマンドを用いてBearerトークンだけを抜き出しています。
このトークンはAPIにアクセスする際に使用します。有効期限は3,600秒なので注意してください。
```shell
# アクセストークンを取得する
TOKEN=`curl -X POST -H "Authorization:Basic ${AUTHORIZATION_BASE64}" -H 'Content-Type:application/x-www-form-urlencoded' -d 'grant_type=client_credentials' https://auth.$DOMAIN/oauth2/token | jq -r '.access_token'`
```

4\. ペイロードを作る
メール送信をリクエストするためのリクエストBodyをJSON形式で作ります。
「送信先メールアドレス」「メールタイトル」「メール本文」「送信者名」「送信者メールアドレス」を適宜書き換えてください。
詳しい設定については[「マニュアル」](https://docs.am.arara.com/apiv2/send/)に記載があります。
```shell
# ペイロードを作る
PAYLOAD=$(cat << EOT
{
 "delivery": [
   {
     "mailing-list": [
       {
         "to": {
           "address": "送信先メールアドレス",
           "device": 0
         }
       }
     ],
     "contents": {
       "subject": "メールタイトル",
       "body": {
         "text": "メール本文"
       }
     },
     "settings": {
       "send_time": "now",
       "from": {
         "name": "送信者名",
         "address": "送信者メールアドレス"
       }
     }
   }
 ]
}
EOT
)
```


5\. メール送信リクエスト
メールの送信をリクエストします。
Authorizationヘッダには先ほど取得したBearerトークンを、
リクエストBodyにはJSON形式のペイロードを載せます。
```shell
# メール送信リクエスト
curl -X POST -H "Authorization:Bearer ${TOKEN}" -d "$PAYLOAD" https://$DOMAIN/send
```


リクエストが成功すれば、以下のようなJSONが返ってきます。
送信先に指定したメールアドレスにメールが届いていることを確認してみてください。
```terminal
{"items": [{"result": {"code": 201, "message": "success"}, "delivery_id": "省略"}]}
```


## さいごに
アララメッセージ API v2を使えば、メール配信機能を自作するよりも簡単に高速かつセキュアで到達率の高いメールを送信できます。

今回紹介した無料トライアルは、試用期間30日以降も無料で延長が可能です。メール配信サービスを検討中の方はぜひお試しください！