事の発端は2022年
2012年以降、私はメールの管理をすべてGmailにて管理してきました。
それから10年経った2022年。ある問題に突入しました。
それは…
外部メールの受信おっせえええええええええええ!!!!!
私は普段使いのメールアドレスを独自ドメインのものにしているのですが、@gmail.com以外のメールアドレスのPOP取得が極めて遅いのです。
これまではPCの前でしかメールを確認することがなかったので、特に困ったことはありませんでしたが、外出先ですぐに確認したいときが増えてきてからは非常に困るようになりました。
とはいっても、アプリ版Chromeなどでデスクトップのページを表示し、設定画面から「メールを今すぐ確認する」をタップしに行けばすぐに済む話なんですけどね。
でも、毎回わざわざ設定画面まで遷移して取得するなんて面倒ですよね?
そこで、当時ちょくちょく名前を聞いていた「Webスクレイピング」の波に乗っかるような感じで、常時メールの確認を行うスクリプトを作成しようと考えました。
まずは検索ゥ!
今の時代、さまざまなソースコードが転がっている時代。
同じ悩みを抱えてプログラミングした方がコードを公開してると信じて検索してみます。
すると!すぐにヒット!
Gmailで外部メールを(ほぼ)リアルタイムに受信する方法 – korintje.com
やっぱりGoogle先生は偉大だなぁと思いながらソースコードをパクってみました。
しかし、ここで問題が。
Gmailにログインできない
まずログインできないところで躓いてしまいました。。
Pythonはこの時初めて触る言語で、久々のVPS操作ともあったので色々焦りました。
当時のことをもうあまり覚えていないので何が原因だったのか詳しくは思い出せませんが、とりあえずこのコードが書かれた2019年から3年経った今、Google側の仕様変更が原因で使えなくなったということだけは分かりました。
色々悩んだ挙句、ひとつのアイデアが頭に浮かびます。
ログインする必要なくね?
一度Googleアカウントにログインしたら、基本的にログアウトを押すまでログイン状態を保持していることを使用してやるのです。
既にログイン済みのFirefoxプロファイルを設置し読み込んでやることで設定画面まで直でアクセスできるんじゃね?
ということで、コーディングしてまいりました。GmailPopChecker – GitHub
使い方・注意
プロファイルのフォルダをgmail.pyと同じ階層に設置してやってください。
フォルダ名が「Profile」ではない時は随時変更してください。
WAITTIME(秒単位)は短すぎない方が良いと思います。
短すぎるとエラーが多発してしまいますので10秒以上がオススメです。
ACCOUNTS(アカウント個数)は正しくないと動作しません!
この数値だけはしっかり確認して設定してください!
ACCOUNTS×WAITTIME=60になるように設定するのがオススメだったりします。
VPSでスクリプトを起動し、Gmailを開くとこんな表示が出てきます。
これは「VPSサーバーからもこのアカウントにアクセスしてるよー」ってことなので問題ありません。
むしろ成功です。
最後に
私と同じような悩みを抱えた方が少しでも多く、ここに辿り着ければなと思い久々に記事を書かせていただきました。
長い間プログラミングから離れていましたが、これを機にモチベーションが向上してきたのでとても良い機会となりました。
コードの大まかな部分をいただきましたkorintje.com様に感謝いたします。