Initial commit: IMAP to LINE notification workflow
This commit is contained in:
106
imap2line/IMAP_to_LINE_Notification_Setup_Guide.md
Normal file
106
imap2line/IMAP_to_LINE_Notification_Setup_Guide.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# IMAPからLINEへの通知ワークフロー構築手順書
|
||||
|
||||
このドキュメントでは、n8nを使用して「メール(IMAP)を受信し、LINE Messaging APIで通知する」ワークフローを構築する手順を説明します。
|
||||
この手順は、Docker環境で動作するn8nを前提としています。
|
||||
|
||||
## 1. 前提条件
|
||||
|
||||
* **n8n環境**: n8n v1.0以上が動作していること。
|
||||
* **メールサーバー情報**: IMAP接続が可能なメールサービスのホスト名、ポート、ユーザー名、パスワード(Googleの場合はアプリパスワード)。
|
||||
* **LINE Messaging API**: LINE Developersコンソールでチャネルが作成され、アクセストークン(ロングターム推奨)とユーザーIDが取得済みであること。
|
||||
|
||||
## 2. 準備: コミュニティノードのインストール
|
||||
|
||||
標準のIMAPノードでは大量のメールを処理しきれない場合があるため、拡張機能であるコミュニティノードを使用します。
|
||||
|
||||
1. n8nの画面左下、または設定メニューから **[Settings]** > **[Community nodes]** を開きます。
|
||||
2. **[Install a community node]** をクリックします。
|
||||
3. 以下のパッケージ名を入力し、インストールします。
|
||||
* Package Name: `n8n-nodes-imap-enhanced`
|
||||
* (承認が必要な場合はチェックを入れて進めてください)
|
||||
|
||||
## 3. ワークフローのインポート
|
||||
|
||||
添付のJSONファイル `n8n_imap_to_line_workflow.json` を使用すると、設定済みのワークフローを一括で読み込めます。
|
||||
|
||||
1. n8nのワークフロー一覧画面(Workflows)を開きます。
|
||||
2. 右上のメニューから **[Import from File]** を選択し、JSONファイルをアップロードします。
|
||||
3. または、新規ワークフローを作成し、画面右上のメニューから **[Import from File]** を選択します。
|
||||
4. インポート後、画面を一度リロード(F5)することを推奨します(コミュニティノードの表示を反映させるため)。
|
||||
|
||||
## 4. ノードの設定詳細
|
||||
|
||||
インポートされたワークフローには、主に3つのノードが含まれています。それぞれの設定を確認・修正してください。
|
||||
|
||||
### A. Schedule Trigger
|
||||
定期的にメールチェックを行うトリガーです。
|
||||
* **Interval**: デフォルトは3分間隔になっています。必要に応じて変更してください。
|
||||
|
||||
### B. IMAP Enhanced (Community Node)
|
||||
メールを受信するノードです。
|
||||
|
||||
* **Credential**: [Create New] からメールサーバー情報を入力して保存してください。
|
||||
* Googleの場合: Userはメールアドレス、Passwordはアプリパスワードです。
|
||||
* **Resource**: `Message` を選択。
|
||||
* ※もし空欄になっている場合は、一度別の項目を選んでから `Message` を選び直してください。
|
||||
* **Operation**: `Get Many` を選択。
|
||||
* **Mailbox**: `INBOX`
|
||||
* **Format**: `Resolved`
|
||||
* **Options(重要)**:
|
||||
* **Limit**: `10` 程度推奨(1回に処理する件数)。
|
||||
* **Search**: `UNSEEN SINCE 10-Feb-2026` のように設定します。
|
||||
* `UNSEEN`: 未読メールのみを対象。
|
||||
* `SINCE dd-Mon-yyyy`: 指定日以降のメールのみ対象(大量の過去メール読み込みを防ぐため必須)。
|
||||
* **Download Attachments**: `false`(動作を軽くするためOFF推奨)。
|
||||
|
||||
### C. LINE Messaging API (HTTP Request)
|
||||
LINEに通知を送るノードです。
|
||||
|
||||
* **Method**: `POST`
|
||||
* **URL**: `https://api.line.me/v2/bot/message/push`
|
||||
* **Authentication**: `Header Auth` を選択。
|
||||
* **Credential**: [Create New] から以下を設定します。
|
||||
* **Name**: `Authorization` (※スペルミス注意。スペース等は入れないこと)
|
||||
* **Value**: `Bearer {YOUR_ACCESS_TOKEN}` (先頭に `Bearer ` と半角スペースを入れる)
|
||||
* **Body**: JSON形式で送信内容を定義しています。
|
||||
* `to`: あなたのLINEユーザーID (`U`から始まる文字列) に書き換えてください。
|
||||
|
||||
## 5. 動作確認
|
||||
|
||||
1. 画面下部の **[Execute Workflow]** をクリックします。
|
||||
2. 自分宛てにテストメールを送るなどして、未読メールがある状態で通知が届くか確認してください。
|
||||
3. 問題なければ、画面右上の **[Active]** スイッチをONにして保存してください。
|
||||
|
||||
以上
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## 参考: CLI(コマンドライン)でのインポート方法
|
||||
|
||||
今回の作業では、ブラウザを使わずにサーバー内部のコマンドだけでインポートを行いました。
|
||||
大量のワークフローを管理する場合や、自動化する場合に便利な方法です。
|
||||
|
||||
### 1. サーバーへのファイル転送
|
||||
作成したJSONファイルを、サーバー上の任意の場所(例: `/home/akira/workflow.json`)に配置します。
|
||||
(ローカルPCから送る場合は `scp` コマンドなどを使用)
|
||||
|
||||
### 2. Dockerコンテナへのコピー
|
||||
n8nが動作しているDockerコンテナの中に、そのファイルをコピーします。
|
||||
```bash
|
||||
docker cp /home/akira/workflow.json n8n-n8n-1:/home/node/workflow.json
|
||||
```
|
||||
* `n8n-n8n-1`: n8nのコンテナ名(環境によって異なります)
|
||||
|
||||
### 3. インポートコマンドの実行
|
||||
コンテナ内部の `n8n` コマンドを呼び出してインポートします。
|
||||
```bash
|
||||
docker exec -u node -i n8n-n8n-1 n8n import:workflow --input=/home/node/workflow.json
|
||||
```
|
||||
* `import:workflow`: ワークフローをインポートするコマンド
|
||||
* `--input`: 読み込むファイルのパス
|
||||
|
||||
これで、IDが一致するワークフローがあれば上書きされ、なければ新規作成されます。
|
||||
|
||||
以上
|
||||
96
imap2line/n8n_imap_to_line_workflow.json
Normal file
96
imap2line/n8n_imap_to_line_workflow.json
Normal file
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"name": "IMAP to LINE Notification (Messaging API) Enhanced",
|
||||
"nodes": [
|
||||
{
|
||||
"parameters": {
|
||||
"rule": {
|
||||
"interval": [
|
||||
{
|
||||
"field": "minutes",
|
||||
"minutes": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"name": "Schedule Trigger",
|
||||
"type": "n8n-nodes-base.scheduleTrigger",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"resource": "message",
|
||||
"operation": "getAll",
|
||||
"mailbox": "INBOX",
|
||||
"format": "resolved",
|
||||
"downloadAttachments": false,
|
||||
"options": {
|
||||
"limit": 10,
|
||||
"search": "UNSEEN SINCE 10-Feb-2026"
|
||||
}
|
||||
},
|
||||
"name": "IMAP Enhanced",
|
||||
"type": "n8n-nodes-imap-enhanced.imapEnhanced",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
200,
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"method": "POST",
|
||||
"url": "https://api.line.me/v2/bot/message/push",
|
||||
"authentication": "genericCredentialType",
|
||||
"genericAuthType": "httpHeaderAuth",
|
||||
"sendHeaders": true,
|
||||
"headerParameters": {
|
||||
"parameters": [
|
||||
{
|
||||
"name": "Content-Type",
|
||||
"value": "application/json"
|
||||
}
|
||||
]
|
||||
},
|
||||
"sendBody": true,
|
||||
"specifyBody": "json",
|
||||
"jsonBody": "={{ {\n \"to\": \"YOUR_USER_ID_HERE\",\n \"messages\": [\n {\n \"type\": \"text\",\n \"text\": \"📩 新着メール\\n\\nFrom: \" + ($json.from?.text || \"Unknown\") + \"\\nSubject: \" + ($json.subject || \"No Subject\")\n }\n ]\n} }}",
|
||||
"options": {}
|
||||
},
|
||||
"name": "LINE Messaging API",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 3,
|
||||
"position": [
|
||||
400,
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"connections": {
|
||||
"Schedule Trigger": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "IMAP Enhanced",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"IMAP Enhanced": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "LINE Messaging API",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user