LINE WORKS API メール送信

# LINE WORKS メール送信 API を活用する方法

LINE WORKS のメール送信 API を使用して、メールを簡単に送信する方法を紹介します。このガイドでは、Google Colab 上で動作するサンプルスクリプトを使い、迅速にメール送信を試せるようにします。

---

## 概要

LINE WORKS のメール送信 API を利用することで、以下の操作が可能になります：
- 指定した送信者からメールを送信
- 複数の宛先に一括送信
- HTML形式またはプレーンテキスト形式のメール送信

Google Colab を使うことで、ローカル環境を準備することなく、簡単に API を試せます。

## 必要な準備

### 1. アクセストークンの取得

Mail API では重要なユーザー情報を取り扱うため、User Account 認証で発行された Access Token でのみ呼び出すことができます。Service Account 認証 (JWT) で発行された Access Token では呼び出すことができません。

以下の記事を参考にして、User Account 認証を用いたアクセストークンを生成してください：

- [LINE WORKS User Account 認証によるアクセストークン生成 (Qiita)](https://qiita.com/iwaohig/items/a7392f2d09b6fc70d8bb)

また、詳細なAPI仕様については公式ドキュメントを参照してください：

- [LINE WORKS Mail API 仕様](https://developers.worksmobile.com/jp/docs/mail)
スコープに `mail` を含むアクセストークンを生成してください。

### 2. Google Colab へのアクセス
[Google Colab](https://colab.research.google.com) にアクセスして、以下のサンプルコードを実行してください。

Google Colab 上で共有されたノートブックもご利用いただけます。以下のリンクから直接試すことができます：

[Google Colab: LINE WORKS メール送信サンプル](https://colab.research.google.com/drive/1j4IrGNrrSzOVK2zQg1Rldvc7FCylOeDV?usp=sharing)

## サンプルコード

以下のスクリプトを Google Colab にコピー＆ペーストし、実行してください。

```python
# 必要なライブラリをインストール
!pip install requests

# ライブラリのインポート
import requests
import json

ACCESS_TOKEN = "your_access_token"  # @param {type:"string"}
USER_ID = "me"  # @param {type:"string"} "me" または LINE WORKSユーザーID
TO_EMAILS = "receiver1@example.com;receiver2@example.com"  # @param {type:"string"} セミコロン区切りで複数指定可能
SUBJECT = "Sample Email Subject"  # @param {type:"string"}
BODY = "This is the body of the email."  # @param {type:"string"}
CONTENT_TYPE = "html"  # @param {type:"string"} "html" または "text"

# API サーバー
API_SERVER = "https://www.worksapis.com"
API_ENDPOINT = f"{API_SERVER}/v1.0/users/{USER_ID}/mail"

# メール送信APIの呼び出し
def send_mail(access_token, to_emails, subject, body, content_type):
    headers = {
        "Authorization": f"Bearer {access_token}",
        "Content-Type": "application/json",
    }
    payload = {
        "to": to_emails,
        "subject": subject,
        "body": body,
        "contentType": content_type
    }

    response = requests.post(API_ENDPOINT, headers=headers, json=payload)

    # レスポンスに基づく出力
    if response.status_code == 200 or response.status_code == 201:
        print("✅ メールが正常に送信されました！")
        print(json.dumps(response.json(), indent=4, ensure_ascii=False))
    elif response.status_code == 202:
        print("⚠️ メール送信リクエストが受理されましたが、処理が完了していません。")
        print("レスポンスの詳細:")
        print(response.text)
    else:
        print(f"❌ メールの送信に失敗しました。ステータスコード: {response.status_code}")
        print(response.text)

# メール送信APIを実行
send_mail(
    ACCESS_TOKEN,
    TO_EMAILS,
    SUBJECT,
    BODY,
    CONTENT_TYPE
)
```


## 入力例
- **`ACCESS_TOKEN`**: 前述の手順で生成したアクセストークン。
- **`USER_ID`**: `"me"` または LINE WORKS のユーザー ID。
- **`TO_EMAILS`**: `receiver1@example.com;receiver2@example.com` の形式で複数宛先を指定。
- **`SUBJECT`**: メールの件名。
- **`BODY`**: メールの本文。
- **`CONTENT_TYPE`**: メール形式（`html` または `text`）。

## 実行結果

### 成功時
```plaintext
✅ メールが正常に送信されました！
{
    "message": "Mail sent successfully"
}
```

### 受理状態（202）
```plaintext
⚠️ メール送信リクエストが受理されましたが、処理が完了していません。
レスポンスの詳細:
{"code": "ACCEPTED", "description": "The request has been accepted for processing."}
```

### 失敗時（例: 400, 403）
```plaintext
❌ メールの送信に失敗しました。ステータスコード: 403
{"code":"ACCESS_DENIED", "description":"Access is denied for userId."}
```

## 注意事項
1. **アクセストークンのスコープ**
   - アクセストークンには `mail` スコープが含まれている必要があります。

2. **TO アドレスの形式**
   - 宛先を複数指定する場合は、セミコロン（`;`）で区切ります。

3. **管理画面での確認**
   - メール送信後、LINE WORKS の管理画面で送信履歴を確認することで、送信結果を追跡できます。

---

LINE WORKS メール送信 API を活用して、自動メール送信の効率化を目指しましょう！