N8Nを使用して、さまざまなコンテンツと添付ファイルを含むメールを送信します
2025-02-14 12:34 ≈ 844字 ≈ 3分

最近、仕事の都合で、大量のメールを送信し、コンテンツの一部を変更して添付ファイルを含め、約 80,000 通のメールをさまざまな人に送信したいと考えています。原理は実はとてもシンプルです。github には使用できる既存のプロジェクトがいくつかありますが、プロジェクトは非常に古く、コードを調整する必要があります。同時に、既存のグループメッセージングツールの中にはクラウドベースのものもあり、実際には添付ファイルをポイントツーポイントで送信したいのですが、クラウドにアップロードしたくありません。

最近たまたまN8Nを勉強していました。これはオープンソースでセルフデプロイメントをサポートしており、ローカルサーバーや自宅のNASにインストールできます。したがって、これはデータセキュリティを確保するための良い試みであり、後で大規模なモデルを通じて電子メールの追跡と変更を行うことができます。

N8Nのインストール

1. docker composeを使用してインストールする

N8N はクラウドにインストールすることも、セルフホストすることも、システムに組み込まれた形で展開することもできます。私は NAS 上の docker に直接インストールしました。

バックアップデータベースとしてPostgresDBを選択したり、Redisを追加したりすることもできますが、単体で使用しているため、組み込みのSQLiteで十分だと思います。これにより、インストールが非常に簡単になります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: 'unless-stopped'
network_mode: 'host'
environment:
- N8N_PORT=1204
- TZ=Asia/Shanghai
- GENERIC_TIMEZONE=Asia/Shanghai
- NODE_OPTIONS=--max-old-space-size=2048
volumes:
- /volume1/docker/n8n/data:/home/node/.n8n:rw
- /volume1/docker/n8n/binaryData1:/binaryData1:rw

ブリッジモードまたはホストモードを使用できます。ホストを使用する場合は、環境変数でポート番号を宣言する必要があります。

さらに、2 つのパスがマッピングされています。1 つは構成情報とデータベースを含む n8n のローカル ファイルであり、もう 1 つはバイナリ ファイルが保存されるパスです。これは設定する必要はありませんが、後で Excel からメール リストを読み込む必要がある場合は、Google スプレッドシートなどに保存するしかありません。クラウドにデータをアップロードしたくないので、アドレスをマッピングして、n8n ノードが読み取れる Excel ファイルをここに配置します。

2. ポート転送

ルーターで、SSL 証明書をバインドするポートを 1204 ではなく 1201 に転送します。これら 2 つはユーザーが設定するもので、好きなように定義するだけです。

3. nginx プロキシ

ポート転送が有効になると、Synologyの組み込みリバースプロキシサーバーを使用できるようになります。

Upgrade と Connection を含むカスタム ヘッダーに WebSocket を必ず追加してください。追加しないと問題が発生するという記事があったと記憶していますが、私のリバース プロキシはすべて追加しています。

Synology の組み込みリバース プロキシ サーバーを使用する利点の 1 つは、SSL 証明書を個別に管理する必要がなくなることです。これを使用しない場合は、独自の Nginx を起動することもできますが、必須ではありません。証明書をインポートする必要がありますが、これは現在 3 か月に 1 回行われています。 acmeを使って自動化することはできますが、全く必要ありません。

N8Nプロセスの設定を開始する

全体のプロセスは次のようになります。理解するのに少し時間がかかりました。比較的簡単です。

ドキュメントを読まないことを強くお勧めします。ドキュメントを読まないでください!ドキュメントを読まないでください!

だって、文書を読んだら諦めたくなるから…

独自のロジックに従ってプロセスを設計するだけです。

1.まず起動ノードが必要です。[開始]をクリックします。

  1. Excelファイルを読み込む
  2. Excelファイルを分割する
  3. 次にループに入ります
  4. 添付ファイルを読んでください
  5. メールを送信する
  6. 次に遅延を追加します。私は 5 秒に設定しました。1 分あたり 12 件のメッセージ、24 時間で 17280 件のメッセージ。この速度は許容範囲です。速すぎると、アカウントがブロックされるのではないかと心配です。

1. バイナリファイルノードの読み取り

左側が入力、右側が出力です。ここで設定する必要があるのはファイルパスです。docker 内の環境変数内の場所を具体的に docker にマッピングしました。したがって、ホストの対応する場所にファイルを保存した後、ルートディレクトリのマッピングされた場所にあるファイルを直接読み取ることができます。

2. スプレッドシートファイルノード

ここで設定する必要があるのは、バッチ読み取りを行うか、バッチ書き込みを行うかだけです。前のノードから送信された Excel ファイルをバッチ読み取りし、次のノードに送信することを選択しました。

3. アイテムのループノード

ここで分割数を設定します。1 つずつ送信することも、5 つずつ送信することもできます。小さい数を設定する方が安全です。

4. 電子メール送信ノード

このノードでは設定すべきことがたくさんあります。まず、STMP を有効にするためにメールを設定する必要があります。私は GMAIL を使用して 2 段階認証を有効にしてから、アプリケーション パスワードを申請します。他のメールを直接検索するか、ChatGPT に問い合わせることができます。

送信メールは設定したメールアドレス、受信メールは以前のExcelから転送したメールアドレスになります。これは自分で書く必要はありません。左側のINPUTでメールの列を直接選択し、To EmailにドラッグアンドドロップすればOKです。

添付部分には、ファイル名ではなく、読んだノードの名前を記入します。送信後も元のファイル名のままですのでご安心ください。ここでは、この変数を書き込むと考えてください。

次に、安全のために HTML メールを選択します。中小企業の上司の中には、正式なメールを使用しておらず、HTML メールをサポートしていない人もいるため、両方を選択します。HTML メール テンプレートについては、インターネットで HTML テンプレート ジェネレーターを検索できます。私は ChatGPT に直接作成を依頼し、それをコピーしました。

5. 効果をテストする

まず、メールボックスに 10 通のメールを送信しました。成功しました。これで正式に使用できるようになります。いずれにしても、NAS は 24 時間オンになっているので、ゆっくりと送信します。