定時メール自動送信システム
プロジェクト概要
私の所属する組織では、毎日、その日の実施内容を全体にメールで送信するというルールがあります。そこで、指定の日時にメールを自動的に送信するシステムを開発しました。このシステムは、スケジュールに基づいて動作し、メールのタイトルや本文の内容を自動生成して送信します。
システム概要図
以下は、定時メール自動送信システムの全体概要図です。
システムの特徴:
- 毎日指定時刻にPythonプログラムを実行します。
- プログラムの実行後、管理者にLINEで通知します。
- Google CalendarやNotionから、その日の日時やメール本文の内容を取得します。
- 作成された本文はSMTPでメールサーバーに送信され、全体に共有されます。
仕様定義
1. 毎日メールを送信
- 休祝日は送信しない。
- ユーザーごとに送信時刻を調整し、全員が異なる時刻にメールを送信。
- メールは、各ユーザーのメールアドレスから特定のメールサーバーに送信。
2. ユーザーへの通知
- 各ユーザーにユーザー名と送信予定時刻を通知。
- 不具合が生じた場合は、該当ユーザーに×で表示して知らせる。
3. メール内容の更新
- メールの内容はデータベースで管理。
- データベースには、「名前」「パスワード」「メールアドレス」「メール本文」「署名」などのプロパティを記述。
- データベースの編集により送信内容を更新可能。
- メールには1週間分の予定を記載。
- 他ユーザーのデータにはアクセス不可。
動作手順
- スケジューラーによって指定時刻にプログラムを実行。
- Notion APIで全ユーザーのデータベースIDを取得。
- 各ユーザーの送信予定時刻を設定(指定時刻 + 0~60分)。
- LINE通知でユーザー名と送信予定時刻を通知。
- 各ユーザーを別スレッドで並行処理。
- 各ユーザーのデータベースから「送信用アドレス」「パスワード」「メール本文」などを取得。
- Google Calendarからical形式でデータを取得し、1週間分の予定を収集。
- メール本文を作成し、メールサーバーに送信。
使用ライブラリ
システムには以下のライブラリを使用しています。
jpholiday==0.1.8
schedule==1.2.1
icalendar==5.0.11
notion_client==2.2.1
マイページ