[TUBUYAKI]メール送信専用アプリ作りました

メール送信に特化したアプリを作りました。IT講師業で、メールに関する実習で毎回GMailから送信するのが面倒で、作りましたwよろしければ、どうぞ。

シェアウエア:BOOTH

MailSender アプリケーション概要

MailSender は、Windows 向けのデスクトップメール送信ツールです。Gmail の SMTP を利用し、アプリパスワードまたは OAuth 2.0 認証で安全にメールを送信できます(動作確認はGMail アプリパスワードでのみ実施)。

シェアウエア:BOOTH

動作環境

  • Windows 10 以降 / 64bit
  • 同梱の MailSender.exe(PyInstaller onefile ビルド)
  • インターネット接続

主な機能

  • SMTP メール送信
    • Gmail を含む一般的な SMTP サーバに対応
    • サーバ/ポート/暗号化方式(TLS/SSL)の設定
    • 認証方式の切り替え
      • アプリパスワード(Gmail の場合は 2 段階認証+16 文字パスワード、その他の SMTP サーバの場合は通常のパスワード)
      • OAuth 2.0(クライアント ID/シークレット)
  • 送信先管理
    • リストへの追加・削除、ドラッグ&ドロップでの添付ファイル登録
    • 任意の宛先を To/CC/BCC として送信リストに振り分け
    • 送信リストの内容をまとめて削除するボタンを配置
  • 添付ファイル管理
    • ドラッグ&ドロップまたは追加ボタンでファイルを登録
    • 添付ファイルの起動(デフォルトアプリで開く)
    • 添付ファイルパスの編集
    • 相対パス対応(カレントディレクトリを起点とした ./ 形式)
  • メール作成
    • 署名、本文、エンコーディング設定(utf-8 / shift_jis / euc-jp / iso-2022-jp)
    • 日本語ファイル名の添付ファイルに対応
  • 設定管理
    • 設定・送信先の自動保存/読込(JSON / TXT)
    • 設定ファイルの手動保存/読込(タイムスタンプ付きファイル名をデフォルトで提案)
    • 相対パスで保存された添付ファイルパスを自動解決
  • 自動送信機能
    • トリガー送信: trigger フォルダ内の JSON ファイルを監視し、自動送信(2 秒間隔)
    • 時間送信: 指定した日時・周期で自動送信(一度のみ/毎日/毎週/毎月)
  • 操作
    • ショートカット Ctrl+T で送信
    • 送信成功・失敗はステータスバーと通知音で確認

画面構成と操作

  1. 送信用設定(画面左)

    • 氏名/メールアドレス/ユーザ名/パスワード(アプリパスワード)を入力
    • 認証方式を切り替えると、必要な入力欄が自動表示
    • 添付ファイルをドラッグ&ドロップ、または「追加」ボタンで登録
    • 添付ファイルの「起動」ボタンでファイルを開く、「編集」ボタンでパスを編集
  2. 送信先設定(画面右)

    • 送信先リストにアドレスを追加/削除
    • 選択したアドレスを ToCCBCC ボタンで送信リストに振り分け
    • 送信リストに割り当てられた宛先が To/CC/BCC ごとに表示され、まとめて削除可能
    • 件名と本文を入力し、必要に応じてエンコーディングを変更
  3. 送信

    • メール > 送信 または Ctrl+T で送信
    • 成功・失敗はステータスバーと通知音で確認
  4. 自動処理機能(スクリプトメニュー)

    • トリガー: チェックを ON にすると、カレントディレクトリの trigger フォルダを 2 秒ごとに監視。JSON ファイル(mail_sender_settings.json 形式)が存在すると自動送信し、送信後にファイルを削除
      • 設定ファイルを用途毎に作成しておき、送信したいタイミングでJSONファイルをtriggerフォルダにコピーすることで、メール送信を実行可能
    • 時間送信: 指定した日時・周期で自動送信するスケジュールを設定。複数のスケジュールを登録可能
      • 設定ファイルを用途毎にtimerフォルダ内に作成しておき、指定した周期でメール送信することが可能

詳細な OAuth 2.0 設定手順は OAUTH_SETUP.md を参照してください。

保存ファイル

  • mail_sender_settings.json : 送信設定(送信リスト、添付ファイルパス含む)
  • recipients.txt : 送信先リスト(タブ/改行区切り)
  • timer_schedules.json : 時間送信スケジュール設定
  • trigger/ : トリガー送信用フォルダ(JSON ファイルを配置すると自動送信)
  • timer/ : 時間送信用フォルダ(スケジュールで参照する JSON ファイルを配置)
  • resources/tkinterdnd2 : tkinterdnd2 ライブラリ(LGPLv3)。DLL を差し替えることでアップデート可能です。

添付ファイルパスの保存形式

  • カレントディレクトリ内のファイル: 相対パス(./ で始まる)で保存
  • カレントディレクトリ外のファイル: 絶対パスで保存
  • 読み込み時: 相対パスは自動的に絶対パスに変換されます

配布・実行方法

  1. 初回起動時に送信設定を入力し、必要に応じて「ファイル > 設定を保存」から JSON/TXT を任意の場所に保存できます。
  2. 設定を読み込む場合は「ファイル > 設定を読み込み」から保存した JSON/TXT を選択します。exe で実行した場合は exe と同じフォルダがデフォルトで開きます。
  3. resources/tkinterdnd2/tkdnd/win64/libtkdnd2.9.2.dll を差し替えることで、LGPL の要件を満たした上で tkdnd を更新できます。

ライセンス

使用しているライブラリおよびライセンス情報は LICENSE.md を参照してください。特に tkinterdnd2 の DLL を差し替える場合は、同フォルダに配置されているファイルを置き換えてください。