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

ところが、修正していく過程で各プラットフォームでの表示結果がバラバラであることが分かった。その中で:
- 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() で関数を使うのとは違うのかな……
よく分からない。とりあえずこれで手を打った ——