コンテンツにスキップ

Python パッケージとメール通知

きっかけ

Python でリスナーを書く際、よくメール通知を使ってリスナーの変化を知らせていたんだけど、最初は簡単な一言の通知で済ませていた。でも後になって、これも以前受け取ったメールみたいに見栄え良くできるんじゃないかと思い、プレーンテキストではなく HTML 形式のメールを送信してみることにした。色々と試行錯誤した結果、最終的に Python パッケージ listener_email を作り上げた。

問題

Apple のショッピング詳細メールを参考にした:

Email

ところが、修正していく過程で各プラットフォームでの表示結果がバラバラであることが分かった。その中で:

  • QQ メール Web 版が最もサポートが良く、<table><tbody><tr><td> などのタグを使わず、普通の <div> と CSS の display: flex プロパティでレイアウトできる。他のメールクライアントは無理。また、raw.githubusercontent.com ドメイン下の画像ではなく、github.com ドメイン下の画像が使える。これも他のメールクライアントでは無理。唯一の欠点はダークモードがないこと
  • iPad 版 Gmail は <table><tr><td> などのタグでしかレイアウトできず、<tbody> タグを使うと Gmail がその中身を取り出してしまい、レイアウトが崩れる。また、カスタムフォントにも非対応
  • Web 版 Gmail も同様で、さらに背景が強制的に白色表示され、ダークモードを有効にしても変わらない
  • iPad 標準の メール アプリも同様。さらに 設定 > メール > プライバシー保護"メール"のアクティビティを保護 がオフになっておらず、下の すべてのリモートコンテンツをブロック もオフになっていない場合、デフォルトで画像が表示されない
  • QQ モバイル版の QQ メール通知 内のメールはカスタムフォントに非対応。QQ サイドバー設定 > 一般 > モード選択体験モード を選択すると、背景が強制的に白色表示される。逆に 普通モード を選択すると、夜間モードで背景が黒色表示される
  • WeChat モバイル版の QQ メール通知 内のメールが最悪。メールアドレスを自動的にリンクとして認識せず、カスタムフォントにも非対応。リンクの色が一律青色に変更され、ページ全体でダークモード対応が全くされていない。上の 送信者 のスタイルもダサすぎる。「小而美」と鑑定

2025-01-05 21:44:39 補足

最新の iPadOS 18.2 では、設定 > メール > リモートイメージを読み込む を有効にするだけでよい

以上の情報をまとめるまで長い時間を要し、最終的にやっと満足のいく HTML を書き上げた。これをパッケージにして使いやすくしようと思い、パッケージ作成の旅が始まった。

Python パッケージ

結論から言うと、国内のリソースが少なすぎた。とりあえずパッケージ listener_email をアップロードして使うことにした。

でも、一般的にパッケージって import listener_email してから listener_email.sent_email() で関数を使うものだと思うんだけど、from listener_email import sent_email, ListenerEmail してから sent_email() で関数を使うのとは違うのかな……

よく分からない。とりあえずこれで手を打った ——