ドコモメールをSIMフリースマホで使う

ドコモ謹製SIMフリー端末向けドコモメールアプリがあるけど、ストア評価*1は驚異の☆2。

play.google.com

ドコモSIM回線で繋ぎGoogle Play Storeのキャッシュを消したらインストールは出来たけどdアカウント認証が通らない。

なんやこれ。

IMAPで送受信

www.nttdocomo.co.jp
ドコモメールはIMAP対応しているので、適当なMUA見繕えば送受信はできる。

GMailアプリもIMAP MUA機能があるけど何故か必ずHTMLメールで送るので宛先がiPhoneのMMSメールだと相手に「Attachment.html」という表示しか出ない。

いかんでしょ。

色々探して調べた結果、K-9 Mailでテキストメールを送ることが出来た。
k9mail.app

バックアップと新着通知がほしいしフォルダ分類をよしなにしてほしい

この状態だと、メーラがポーリングしないと新着メールが取れない。ポーリングしてるとスマホの電池がゴリゴリ減るので、何らかのプッシュ通知を考える必要がある。

また、昔からキャリアメールをGMailへ転送してバックアップしてる*2ので、これも引き続き必要。

ぐぐるfetchmailでやる方法がいくつかヒットしましたが、ドコモメール上でフォルダ分けしてるとそのままでは動かない。

ドコモメールでフォルダを作るとIMAPサーバ上に対応するメールボックスが出来て分類されますが、IMAPでメールボックスが複数存在していると面倒が溢れることがわかった。

  • IMAPメールサーバのlong pollingであるIDLEはメールボックス単位*3
  • fetchmailもメールボックス単位で設定を書く必要がある
  • GMailアプリはINBOX(受信トレイ)しかポーリングしてくれないので、分類されたメールはわからない。


設定側で対象フォルダを意識すると必ず事故る*4ので、勝手にフォルダを認識してくれないと困る。

仕方ないので自分でサーバ上のメールボックスなめる実装を書くことにしました。

通知をどのように送るか

GMailIMAPでのメール追加時に通知を出してくれたら良いんですけど出ない

新着メール通知表示ごときでAndroidアプリ作りたくないので、既存のものを組み合わせてやる方向で考えた。

Web Push/Notification

試してみたけど、スマホゲームのようなCPUもりもり食べるアプリを起動するとブラウザタスクが殺されるのかService Workerが死んで通知が出なくなるのでやめた。

Slack

安全牌なので作ったけど、安全すぎて面白くない。

Outlook.com

Outlook.com ならIMAPで転送したメールも受信トレイ宛なら通知を出してくれる*5ことがわかったので、GMailと同時にOutlook.comへもメールを転送することにした。

当たり前ですがメールサービスなので、これが一番自然な通知を表示してくれる。

つくったもの

Python使って、ドコモメールの全フォルダ(全部と言ってもゴミ箱とかは除く)からGMailOutlook.comにメールを転送してSlackに通知を投げるスクリプトを書いた。
github.com

適当なサーバでcronないしsystemd-timerにより定期的に実行されるイメージ。

キャリアメールさっさと捨てたいねぇという気持ちを強くして終わる。

*1:2021年6月3日時点

*2:むかしはau使ってたので自動転送サービス使っていたが、ドコモメールにはない。

*3:メールボックスをまたぐIMAP NOTIFYという仕様もあるけど、ドコモメールサーバは非対応

*4:新しく作ったフォルダが転送されないとか絶対やるミス。

*5:なんで受信トレイ以外は表示してくれないのか、ぐぐると困ってる記事ばっかり出てくる。