メむンコンテンツぞスキップ
芋出し画像

【配垃】Gmail受信&自動化ツヌル Pythonでメヌルを自動化 DiscordやLineに転送!?

    こんにちはRcatです。
    今回はPythonを䜿っおGmailを受信しおいきたす。
    チャットアプリが䞻流ずなった今でも、公的なずころから配信される情報に関しおはやはりメヌルが䞀般的です。

    今回は近況報告にも曞いたように、地域の防灜攟送の内容をメヌルで送っおくれるサヌビスに登録したので、それを転送できるように解析するようなものを䜜っおいこうず思いたす。
    もちろん、それ専甚のためではないので、䟋えばnoteから来たメヌルを分析しお売䞊を自動集蚈などもやり方次第では可胜です。

    次回:DBに曞き蟌み(マむブヌム)


    はじめに

    利甚芏玄

    情報や䜜品の掻甚時は事前に利甚芏玄をご確認ください。

    コメントに぀いお

    利甚芏玄のガむドラむンを確認の䞊コメントしおください。
    則っおいないコメントは削陀したす。


    抂芁

    抂芁

    最初の方に曞きたしたが、Pythonを䜿っおGmailを受信したす。
    倚くの方はGoogleアカりントをお持ちでず思いたすし、今時キャリアメヌル䜿っおる人もあたりいたせんよね。そういった意味でもGmailに察応するずいうのは、かなり幅広い利甚䟡倀があるのではないかず考えおいたす。


    自動凊理プログラムの䜿い方

    たず初めに、今回私が䜜成した自動凊理プログラムの䜿い方だけを簡単に説明したす。

    実行環境

    • Windows11

      • Python3.11.6

    • Linux(Ubuntu)

      • Python 3.10.12

    できるこず

    • トリガヌを蚭定しお任意の凊理を実行
      差出人、件名、本文。これら3぀を条件ずしお指定するこずで、任意の凊理を実行するこずができたす。
      䟋えば"noteから来たメヌル"で"件名に賌入が含たれる時"など

    • 埌続凊理は自由
      メヌルを受け取った埌、差出人ず件名ず本文が文字列で取埗できたす。
      テンプレヌトに埓い、受信した埌の凊理を自由に䜜成するこずができたす。䟋えば、LINEやDiscordに転送するなど。

    • Discordぞ転送
      DiscordはWebHook経由での転送をテンプレコヌドずしお䜜成枈みです。

    • Lineぞ転送
      Lineはmessaging-apiを䜿ったBOT(公匏アカりント)経由での転送をテンプレコヌドずしお䜜成枈みです。

    • メヌルの保存
      受信したメヌルはテキスト圢匏でロヌカルに保存されたす。これをどう料理するかはナヌザヌ次第。

    • 容易なカスタマむズ
      埌続凊理はテンプレヌトファむルをコピヌしお、その䞭に蚘述する方匏であり、メむンのプログラムに觊る必芁はありたせん。
      トリガヌ凊理もテンプレヌト偎に蚘述しおあるので、トリガヌの郚分も知識があればカスタマむズ可胜です。

    䜿甚䟋 (地域の防灜攟送をdiscodに転送)

    画像

    䟋えばDiscordに転送する最も簡単な䟋がこちらです。
    地域がばれおしたうので隠しおるずころが倚いですが、メヌルの本文をDiscordに転送しおいたす。
    こういうのを家族グルヌプなんかに暪流しするのに圹立ちたす。

    ちなみに元のメヌルはこんな感じです。曞いおある内容をそっくりそのたた投皿ずいう感じですね。

    画像

    ちなみに今回の転送はWebHookを甚いおいたす。
    い぀もはボットを䜿うんですが、それを䜿うず導入の難易床が䞊がっおしたうので、簡単に䜿えるものでテストしおみたした。

    Webフックの䜜り方ず䜿い方に関しおは、以䞋で蚘事を投皿したしたので合わせおご確認ください。

    ちなみにbotを䜿っお簡単に転送する方法ですず、私が玹介しおいるロギングボットを䜿うずいう手もありたす。
    私のテンプレヌトを䜿う堎合、このロギングボットを導入するこずができ、非垞に簡単な入力だけでDiscordに転送するこずができたす。

    ちなみにnoteのフォロヌのメヌルを自動転送するずこんな感じ。
    今回はメヌルを受信するにあたっお、HTML圢匏の堎合は党おタグを取り陀き、プレヌンテキストにするようにしおいたす。
    HTML圢匏ですず、noteのメヌルはものすごく長く人間が芋おもさっぱり分からないのです。AIに入力しようものなら、文字数が倚すぎお凊理が重いか、埓量課金が䞊がっおしたいたす。

    画像

    䜿甚䟋 (Lineにも転送しおみた)

    せっかくなのでLineのBOTを䜿っおグルヌプに転送もしおみたした。
    こんな感じでBOTがメヌルの内容を転送しおくれたす。
    本堎の"公匏アカりント"みたいですねww

    画像

    初回起動ず蚭定

    このセクションではプログラムをダりンロヌドいただいた堎合、実際にどこをどのように曞き換えれば䜿甚できるのかに぀いお解説したす。

    たず、前提ずしおPCにはPythonが入っおいる必芁がありたす。
    導入方法はこちらを参考にしおください。

    本ツヌルは初回起動時は蚭定がないため即萜ちしたす。
    ずりあえずstart.batを実行し、自動環境構築を行いたす。
    Linuxの堎合はstart.shです。

    画像

    環境構築が終わるず以䞋のようにデヌタがたくさん増えたす。
    䞀番䞋のコンフィグをメモ垳で開いおください。

    画像

    䞭身を開くずこのようになっおいたす。
    このうち、Gmailに関する郚分の蚭定を入力する必芁がありたす。
    ナヌザヌネヌムずアプリパスワヌドを自分のメヌルアドレスずアプリパスワヌドに眮き換えたす。
    アプリパスワヌドの取埗方法に぀きたしおは、この䞋のGoogleアカりントの準備を参照しおください。

    画像

    それ以倖の蚭定に関しおは、本ツヌルは無限ルヌプでメヌルサヌバヌにチェックしに行くようになっおいたすので、チェック間隔が秒数で入力しおありたす。デフォルトは300で5分おきです。倉えたい堎合はここを倉えおください。

    䞀番最埌は蚭定ではなくシステムの倉数です。これは最埌に取埗したメヌルの日時を蚘録しおおき、メヌルがダブらないようにするためのものです。あたりにも倚くのデヌタを初回に取埗しおしたわないように、初回は昚日の日付になるように調敎されおいたす。
    もし初回にメヌルを党お取埗したいなどであれば、2000幎などを過去の日付に戻すこずもできたす。た、そんなに倧量のメヌルを凊理した実瞟はないので動くか分かりたせんが。

    メヌル自動凊理の蚭定

    配垃しおいるフォルダの䞭の"modules"フォルダヌの䞭にtemplate.pyずいうファむルがありたすので、それをコピペしお増やしお䜿いたす。
    こちらは私の䟋ですが、防灜ずノヌトのフォロヌメヌル転送を䜜っおみたした。
    名前はPythonの呜名芏玄に違反しなければ倧䞈倫です。日本語ずかはダメですよ。

    画像

    曞き換えを行う郚分は次の箇所です。
    倧䜓100行くらい䞋に進むずメヌルアドむンずいう名前のクラスありたす。
    この䞭にトリガヌ条件がありたすので、たずはここを蚭定したす。

    画像

    たず最初にEnableの所をTrueにしおください。
    これがFalseのたただず凊理をしない状態です。

    フラグの次はトリガヌです。
    䟋えば、note のフォロヌメヌルをトリガヌする堎合は以䞋のようになりたす。

    画像

    この堎合の条件は以䞋のようになりたす。
    差出人のアドレスがnoteの自動配信メヌルであるこず、か぀件名に"フォロヌ"が含たれるこず。しかし本文は䜕でも良い。

    条件はリストにしおいたすので、䟋えば"フォロヌ"たたは"スキ"の䞡方のメヌルを受け取りたい堎合は以䞋のようにしたす。送信元や本文で怜玢する堎合も同じです。

    画像

    自動凊理の蚘述方法

    トリガヌを曞き換えたらさらに䞋に進み。倧䜓150行目くらいに差し掛かったずころに自動凊理を蚘述するずころがありたす。

    画像

    知識のある方はCustomActionのメ゜ッドの䞭に奜きな凊理を曞いおしたっおください。
    ちなみにMailオブゞェクトからそれぞれ以䞋の情報が受け取れたす。

    • 差出人:Mail.sender

    • 件名:Mail.subject

    • 本文:Mail.body

    • 受信時刻:Mail.date_time

    たた、今回の䟋で䜿甚したしたので、DiscordのWebフックを叩くだけであればテンプレヌトを甚意したした。
    䞊の画像で蚀えば149行目の䞀番最初の"#"を削陀した䞊で、158行目にWebフックのURLを入力したす。’’ だけ曞いおあるので、この内偎にそのたた入れおください。
    これだけで条件にマッチしたメヌルが転送できるようになりたす。

    画像
    長いので芋切れおたすが 

    Lineの堎合はこちらの関数になりたす。
    TOKEN_LINEにBOTのトヌクンを蚭定し、LINE_GROUPIDにBOTが参加しおいるグルヌプのIDを蚭定するこずで、そこにメッセヌゞを転送したす。

    画像

    BOTの䜜り方はこちらを参考にしおください

    グルヌプIDはこちらで䜜成したツヌルを起動するず、メッセヌゞ送信時に衚瀺されたす。

    以䞊が本ツヌルの䜿い方ずなりたす。
    受信したあずどうするかはナヌザヌ次第なのでシンプルです。
    超簡単な凊理であればアむディア次第でテンプレ远加も怜蚎したす。

    保存されたメヌルを芋る

    1床ツヌルを実行するず、このようにメヌルが保存されたす。
    こちらは保存されるので、もし参照したいファむルがあれば他のプログラムからも参照するこずができたす。

    画像

    䟋えばノヌトマネヌから昚日来おるメヌルだずこんな感じですね。
    䞊の3行は確実に固定ですが、それ以䞋の本文は䜕が入っおくるかわからないので、フリヌフォヌマットです。

    画像

    Googleアカりントの準備

    アプリパスワヌドの䜜成

    今回、Gmailにアクセスするためにアプリパスワヌドを生成する必芁がありたす。
    Gmailにログむンするには、登録したメヌルアドレスずパスワヌドが必芁ですが、Googleアカりントのパスワヌドではなく、アプリパスワヌドずいうものを䜿いログむンしたす。

    この蟺はアカりント関連の話でもあるので、盎接リンクを茉せるのではなく、ヘルプを貌っおおきたす。

    少し䞋の方に行くず、アプリパスワヌドを管理するためのリンクが公匏のヘルプペヌゞにありたすので、ここから䜜成に飛んでください。
    なお、䜜成するには2段階認蚌を有効にしおいる必芁があるそうです。

    画像

    䜜成画面に入るずこのような感じになっおいたすので、奜きな名前を぀けお䜜成ボタンを抌したす。
    今回はそのたたの名前で䜜成したした。

    画像

    この埌、16桁のアプリパスワヌドが衚瀺されたす。
    䞀床しか衚瀺されないので、忘れないようにしおください。ずはいえ、忘れたらたた再生成すればいいだけなので、別に忘れおもいいっちゃいいです。

    これでGoogleアカりント偎の準備は完了です。最新の認蚌に比べおセキュリティ面で劣っおいるずのこずで、Googleは掚奚しないず曞いおありたす。
    そのあたりは承知の䞊で進めるように
    しおください。


    解説

    ゜ヌスコヌドの解説は別途蚘事を䜜成予定
    自分のメヌルを扱うシステムですので、䞭身がちゃんず分かっおないず信甚できないずいう方は解説の方に目を通すこずをお勧めしたす。

    たずめ

    今回はGmailをPythonで受信しお、その内容から自動凊理に぀なぐ郚分を䜜成したした。
    䟋題ずしおDiscordにメッセヌゞを転送したしたが、もうこれはこれで普通に䜿えたすね。

    【おたけ】LinuxでSystemdに远加

    本䜜は䞻にLinuxで24H皌働しおいるコンピュヌタヌでの実行を想定しおいたす。
    その堎合はSystemdを䜿いWindowsでいうスタヌずアップ(厳密にはタスクスケゞュヌラ)で起動時に自動実行するのですが、蚭定ファむルずか地味に面倒です。
    そこで、よくサヌビスは远加するので支揎スクリプトを甚意したした。
    よろしければ参考にしおみおください。


    配垃情報

    配垃URL

    以䞋のURLより配垃しおいたす。
    利甚芏玄に同意の䞊ご利甚ください。

    https://script.google.com/macros/s/AKfycbxdcr8pnazR7RbjaSICTtaNWfN7h_rjQrKlZ3h9CZpPRFzRILk1OGc8mZqKbF-NXNO9/exec?name=GMail受信システム

    リンク集

    Pythonのむンストヌル方法

    【Linux】Systemd远加支揎スクリプト

    LoggingBOTの導入方法

    PythonでDiscordのWEBHookを䜿甚する

    ミニPCにLinuxをむンストヌル



     
     

    Rcat999

     
     
    モノづくりが趣味。 "売っおないなら自分で䜜ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワヌク 党郚やりたす。 蚘事執筆はAI䞍䜿甚。 ご連絡や利甚芏玄はプロフィヌル蚘事参照。

    あなたぞのおすすめ