0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

定時メール自動送信システムの作成

Last updated at Posted at 2024-01-29

定時メール自動送信システム

プロジェクト概要

私の所属する組織では、毎日、その日の実施内容を全体にメールで送信するというルールがあります。そこで、指定の日時にメールを自動的に送信するシステムを開発しました。このシステムは、スケジュールに基づいて動作し、メールのタイトルや本文の内容を自動生成して送信します。

システム概要図

以下は、定時メール自動送信システムの全体概要図です。

システム概要

システムの特徴:

  • 毎日指定時刻にPythonプログラムを実行します。
  • プログラムの実行後、管理者にLINEで通知します。
  • Google CalendarやNotionから、その日の日時やメール本文の内容を取得します。
  • 作成された本文はSMTPでメールサーバーに送信され、全体に共有されます。

仕様定義

1. 毎日メールを送信

  • 休祝日は送信しない
  • ユーザーごとに送信時刻を調整し、全員が異なる時刻にメールを送信。
  • メールは、各ユーザーのメールアドレスから特定のメールサーバーに送信。

2. ユーザーへの通知

  • 各ユーザーにユーザー名と送信予定時刻を通知
  • 不具合が生じた場合は、該当ユーザーに×で表示して知らせる。

3. メール内容の更新

  • メールの内容はデータベースで管理
  • データベースには、「名前」「パスワード」「メールアドレス」「メール本文」「署名」などのプロパティを記述。
  • データベースの編集により送信内容を更新可能。
  • メールには1週間分の予定を記載。
  • 他ユーザーのデータにはアクセス不可。

動作手順

  1. スケジューラーによって指定時刻にプログラムを実行。
  2. Notion APIで全ユーザーのデータベースIDを取得。
  3. 各ユーザーの送信予定時刻を設定(指定時刻 + 0~60分)。
  4. LINE通知でユーザー名と送信予定時刻を通知。

LINE通知

  1. 各ユーザーを別スレッドで並行処理。
  2. 各ユーザーのデータベースから「送信用アドレス」「パスワード」「メール本文」などを取得。
  3. Google Calendarからical形式でデータを取得し、1週間分の予定を収集。

メール情報取得までの流れ

  1. メール本文を作成し、メールサーバーに送信。

メール送信までの流れ

使用ライブラリ

システムには以下のライブラリを使用しています。

jpholiday==0.1.8
schedule==1.2.1
icalendar==5.0.11
notion_client==2.2.1

マイページ

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?