commit 37f2185d2e784cde082c5d72ec9d766e23db486c Author: akira Date: Wed Feb 11 12:32:32 2026 +0900 Initial commit: IMAP to LINE notification workflow diff --git a/imap2line/IMAP_to_LINE_Notification_Setup_Guide.md b/imap2line/IMAP_to_LINE_Notification_Setup_Guide.md new file mode 100644 index 0000000..12b52b9 --- /dev/null +++ b/imap2line/IMAP_to_LINE_Notification_Setup_Guide.md @@ -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が一致するワークフローがあれば上書きされ、なければ新規作成されます。 + +以上 diff --git a/imap2line/n8n_imap_to_line_workflow.json b/imap2line/n8n_imap_to_line_workflow.json new file mode 100644 index 0000000..a8c2ebd --- /dev/null +++ b/imap2line/n8n_imap_to_line_workflow.json @@ -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 + } + ] + ] + } + } +} \ No newline at end of file