PythonでGmailのメールを確認しよう. base64ってなんぞ??理解のために実装してみた.  pip install --upgrade google-api-python-client oauth2client, 実際にAPIにアクセスして、日付と送信元アドレスでメールを検索します。 【Python × Gmail API】メールを削除できない. gcse.async = true; Python Quickstart  |  Gmail API  |  Google Developers, Quickstartのリンク(リンク先:API を有効にする)より、以下の流れで登録を行います。, 認証情報の作成ではどの形を選択すれば良いのか悩みましたが、Quickstartを参考にウィザードで選択する形を取りました。Webアプリ化する場合などは別の方法になるかと思います。, Googleのドキュメントでは、ユーザのディレクトリにclient_secret.jsonファイルを保管していましたが、今回はアプリのディレクトリに保管します。, 認証部分については、Python Quickstartにあるget_credentials()関数を参考にします。 Instantly share code, notes, and snippets. GitHub Gist: instantly share code, notes, and snippets. they're used to gather information about the pages you visit and how many clicks you need to accomplish a task. Security Engineer in Tokyo. gcse.type = 'text/javascript'; 'https://www.googleapis.com/auth/gmail.readonly', ほとんどのArm IPが試し放題でスタートアップは年会費無料!?Arm Flexible Access, you can read useful information later efficiently.  参考ページ:Python Quickstart |Gmail API, 1.上記リンクのstep1より"Enable the Gmail API"ボタンをクリック Users.messages: send  |  Gmail API  |  Google Developers, Request bodyのrawプロパティへ設定する際、エンコードする必要がありますが、公式ドキュメントでは2種類の方法が記載されていました。, エンコードされる内容が微妙に違うため、どちらが正しいのか調べましたが、後者のドキュメントを読んだ際に、. By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. 先日からGmail API を使ってメールの受信、エンコードするのに悩まされて続けてきました。, まだ、安定版ではないですが、Gmail APIを使ってPython3から簡単にメールの送受信ができるようにしました。, https://github.com/sleepless-se/gmail-api-python3, 主にGmailの受信用途で作ったので送信がきちんとフォローしきれていないかもしれませんが、皆様からのプルリクエストお待ちしております\(^o^)/, 主にGoogleのドキュメントからコピペしたようなものばかりですが、コピペだけでは全然動かないGoogleのドキュメントなので、お役に立てれば幸いです。, 不足点もあるかと思うのでコメント、TwitterでDM、プルリクエストなどお待ちしております!!, Read meが英語なのでGoogle翻訳ですが日本語で確認されたい方は参考にしてください。, python3によってGmail APIを使いやすくすることができます。このモジュールはマルチバイト言語をサポートします。それは日本語、中国語、ハングルでも動作します。, Google Developers Consoleでプロジェクトを作成または選択し、APIを自動的にオンにします。 [続行]、[資格情報に移動]の順にクリックします。, アプリケーションの種類を[その他]に設定し、[Gmail API Quickstart]という名前を入力して[作成]ボタンをクリックします。, クライアントIDの右側にあるfile_download(JSONのダウンロード)ボタンをクリックします。, このファイルを作業ディレクトリに移動し、名前をclient_secret.jsonに変更します。, git clone https://github.com/sleepless-se/gmail-api-python3.git s.parentNode.insertBefore(gcse, s); # If modifying these scopes, delete the file token.json. このブログでは、プログラミングに関する備忘録をまとめてます。 セキュリティ関連の記事はこちらのブログにて。, 好きな言語はC#とPythonです。 特にMicrosoft 関係の技術が好きです。. 現在は『アイデアをカタチにする』ことが仕事です。 What is going on with this article? こんにちは、業務自動化ツール開発担当の吉池(@valmore_myoshi)です。, 今回はGmail APIとPythonを使ってメール送信を自動化する方法を解説します。メール送信を自動化すれば作業時間を削減できるだけでなく、送信ミスも防げます!, 定期的にメールを送信する作業がある方にオススメです!また、本記事では1通のメール送信を自動化していますが、改良すれば数十通、数百通といった大量のメールを一括して送信することもできるので、複数のメール送信を自動化したい方も参考にしてください。, Gmail APIとは、Gmailの機能をプログラムで操作できるようにしたものです。複数のプログラミング言語に対応していますが、今回はPythonを使った実装例を紹介します。, 公式リファレンスは英語ですが、Gmail APIの使い方が記されています。今回はメール送信の自動化について解説しますが、他の機能も使ってみたいという方はリファレンスをご覧ください。, https://developers.google.com/gmail/api/v1/reference/, Gmail APIには利用制限があります。1日に使えるポイントと1秒間で使えるポイントが制限されています。メールを送ったり、下書きを作成したり、Gmail APIの機能ごとに消費するポイントが決められています。, ちなみにメール送信で消費するポイントは100ポイントです。1日当たりで計算すれば一千万通、一秒当たり2通程度メールを送れる計算になります。機能ごとの消費ポイントはこちらから確認できます。, https://developers.google.com/gmail/api/v1/reference/quota, メール送信自動化プログラムの完成系は下記動画のようになります。ワンクリックでメールを自動送信することが可能です。, Gmail APIを使うにはGoogle Cloud Platform(GCP)でAPIを有効化する必要があります。GCPとはGoogleがクラウド上で展開するサービスの総称です。Googleアカウントごとに利用しているサービスを管理しています。, GCPにはこちら(https://console.cloud.google.com/?hl=ja)からアクセスしてください。アクセス後、サイドバーの「APIとサービス」からダッシュボードをクリックします。, APIの管理画面が開きました。個々のAPIはプロジェクト単位で管理されるため、メール送信自動化用のプロジェクトを新しく作ります。, プロジェクト名を入力する必要があるので、わかりやすい名前を付けましょう。入力後、作成ボタンをクリックします。, これでプロジェクトができました。このプロジェクトでGmail APIを管理します。, 早速Gmail APIを有効化していきましょう!検索窓に「gmail」と打ってみるとGmail APIと表示されるのでクリック。, 続けて、このメール送信自動化プログラムを使うユーザーからGmailの利用許可をもらうための設定をしていきます。ユーザーから許可をもらって初めてプログラムからメールを送信できるようになります。, ユーザーから許可をもらわずにプログラム単体でメールを勝手に送信できら悪用されてしまいます。だからこそ、メール送信自動化プログラムを実行したときにユーザーから許可をもらう設定が必要なのです。, いくつかタブがありますが、OAuth同意画面タブをクリックしてください。ここでは、ユーザーから許可をもらう認証画面に表示するアプリケーション名を入力します。入力後、末尾の保存ボタンをクリックします。, 続けてクライアントIDとクライアントシークレットを取得します。これらを取得することで、これから作るメール送信自動化プログラムがGCPでGmail APIを有効化済みであることの証明になります。, 認証情報タブをクリックし、「認証情報を作成」ボタンからOAuthクライアントIDをクリック。, 今回はPythonスクリプトを直接実行するのでその他を選択し、名前を入力してください。, OAuthクライアントのクライアントIDとクライアントシークレットが作成されました。, このクライアントIDとクライアントシークレットが格納されたJSONファイルをダウンロードします。, 最初に必要なライブラリをpipでインストールしておきます。pipとはPythonのパッケージ管理ツールで外部ライブラリを簡単に読み込んで使用できます。Windowsの場合はコマンドプロンプト、Macの場合はターミナルを開いて下記コマンドを実行します。, ライブラリのインストールが完了したらコードを書きましょう。コードの完成系は下記のとおりです。, 一つひとつプログラムを見ていきましょう。まず、プログラム実行の起点が⑧です。If文で下記のように条件分岐していますね。, __name__属性が’__main__’という文字列と一致するとき処理を実行します。コマンドラインで直接プログラムが実行されると__name__属性に’__main__’が入ります。つまり、コマンドラインからこのPythonプログラムが直接実行された場合に限り、以降の処理を実行するという意味になります。, ⑤アクセストークンを取得する処理の最初のIf文です。アクセストークンを格納しているtoken.pickleというファイルを探し、トークンを取り出しています。, token.pickleがなくてトークンを取得できない、あるいはトークンの有効期限が切れている場合の処理です。有効期限が切れているだけであれば、リフレッシュして新たなトークンを取得しています。, トークンがそもそもなければ、先ほどGCPからダウンロードしたクライアントIDとクライアントシークレットを含むクレデンシャルを使って、ユーザーに認証画面を表示しています。認証完了後、トークンを取得しています。, アクセストークンを取得できたら下記のようにGmail APIを利用するためサービスを作ります。, サービスを作ったあとはメール本文を作ります。②メール本文の作成には送信元メールアドレス、送付先メールアドレス、件名、本文が必要です。4つの情報をcreate_message関数に渡しています。, 最後に③メール送信の実行を見ていきましょう。先ほど作ったサービスとメール本文が必要です。User IDは’me’を指定することで認証したユーザーを指定できます。, Pythonファイルがあるディレクトリまで移動し、プログラムを試してみましょう。コマンドプロンプトあるいはターミナルを開いて下記コマンドを実行してください。今回はファイル名をmain.pyとしていますが、各自作ったファイル名に置き換えてください。, アカウントを選ぶとGmailの利用権限の付与を許可するダイアログが表示されます。許可をクリックします。, メール送信を自動化する方法を解説しました。Gmail APIを利用する準備やPythonのコーディングをする必要がありますが、コード数も短く、それほど難しくはありません。, 今回は1通のメール送信でしたが、改良すれば複数のメールを一括で送信することも可能です。メールがルーチンワークになっている方はぜひお試しください!, 【完全初心者向け】Python入門その3-プログラムを書いてみよう(Windows10編)-, 【完全初心者向け】Python入門その1-プログラムって?Pythonがおすすめの理由-, 【Excel VBA入門】Select Case文の使い方。複数条件をスッキリ書く!, 【Excel VBA入門】ドロップダウンリストの作り方。複数リストの連動方法も解説. 【Python】Gmail APIを使ってメールを受信する方法.  ・APIを使ったメールの取得, Gmail APIを使うためには、事前に以下の作業が必要です。 For more information, see our Privacy Statement. Learn more. フォローよろしくお願いします(^^), このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。, エンジニア Python Quickstartを参考に、事前準備を行います。 Dockerを使ってSeleniumをすぐに使い始められます。, Selenium-with-Django Why not register and get more from Qiita? they're used to log you in.  実行すると、ヒットしたメールが一覧表示されます。 Gmail APIを使えばGmailの機能を自動で操作できます。さまざまな機能の中でも本記事ではメール送信を自動化する方法を解説。Pythonで簡単なプログラムを作り、ワンクリックでメールを送れるようにな … 【Python】Gmail APIを使ってメールを受信する方法です。 Gmail APIを使うにはGoogle API コンソールでGmail APIを有効にしてアプリケーションの登録する必要があります。 登録手順はGmail APIのガイドを確認してください。 サンプルコードは以下の通りです。 We use optional third-party analytics cookies to understand how you use GitHub.com so we can build better products. var s = document.getElementsByTagName('script')[0]; 参考 ・WEB RESTful APIのURI設計(エンドポイント設計) GmailAPIドキュメント. https://developers.google.com/gmail/api/v1/reference/users/messages/send#auth, と、その後のサンプルコードと異なった解説が書かれていたことと、ライブラリのリファレンスや他の言語でもbodyはbase64urlでエンコードすると書かれていたことからも、base64.urlsafe_b64encode()を使うことにしました。, Python3のドキュメントでは、bytes-like objectを引数に取ると書かれており、それが今回の原因と考えられました。 (function() {