こんにちは!データサイエンティストのウマたん(@statistics1012)です。
この記事ではPythonを使ってGmailを操作する方法を見ていきます。
Gmailをいちいち開いてGUI上で送信しなくてもPythonを使ってメールを送信することができるんです。
例えば、同じような営業メールを送る場合はメールのリストを持っておいてそれをPythonで取得して、それぞれのメールアドレスに定型文を送る、などができますね。
日々の業務で単調なメール送信作業をしているならぜひPythonを取り入れて業務効率化を進めましょう!
ちなみにUdemyにてさらに踏み込んだメールを絡めた自動化方法について解説していますのでぜひ合わせてチェックしてみてください!
ChatGPTのFunction Callingという機能を使って日本語で指示出しをしてそれを理解した上でスクレイピングやGmail送信をしてくれるエージェントを作っていきます。
【初心者向け】生成系AI時代のPython×自動化!Function Callingを使って煩雑な作業を自動化しよう!
【時間】 | 3.5時間 |
---|---|
【レベル】 | 初級 |
ChatGPTのFunction Callingという機能を存分に使って自動化したいならこれ!
それでは早速PythonでのGmail操作方法・メール送信方法を見ていきましょう!
目次
Googleアカウントのアプリパスワードの取得
PythonからGmailを操作するにはご自身のGoogleアカウントのアプリパスワードを作成する必要があります。
以下のリンクから遷移して今回Gmail送信を行いたいGoogleアカウントであることを確認しアプリパスワードを生成しましょう!
https://myaccount.google.com/apppasswords
この時、該当するGoogleアカウントにおいて2段階認証がされていないとアプリパスワードを生成できないので注意してください
PythonからGmailを操作してメール送信するコード
アプリパスワードの取得はできましたでしょうか?
それでは続いてPythonからGmailを操作してメール送信するコードを見ていきましょう!
Step1:ライブラリをインポート
まず必要なライブラリをインポートしていきます。
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
それぞれのライブラリがどのような役割を果たしているのか簡単に見ていきましょう!
まず、smtplibとは、Pythonの標準ライブラリで、Simple Mail Transfer Protocol (SMTP) を使用してメールを送信するために使用されます。
このライブラリを使って、SMTPサーバーを介してメールを送信することができるんです。
続いて、email.mime.text.MIMEText。
これは、テキスト形式のメール本文を作成するためのモジュールです。
このモジュールを使用して、メールの内容(本文)をテキスト形式で指定できます。
そして、email.mime.multipart.MIMEMultipart。
こちらは、複数のパートから成る複合的なメールメッセージ(MIME: Multipurpose Internet Mail Extensions)を作成するためのモジュールです。
例えば、テキストと添付ファイル、HTML形式のメールなど、異なるコンテンツを1つのメールに含めたい場合に使用します。
今回作成するコードではファイルの添付はしませんが、最初からファイル添付ができるようにセットしておきましょう!
Step2:メールアドレスとメッセージを定義
続いてメールアドレスとメッセージを定義しておきましょう!
# 送信元のGmailアカウント情報
gmail_user = "XXXXXXX@gmail.com"
gmail_password = "[アプリパスワード]"
# メッセージを定義
subject = "テスト"
message = "これはテストメールです"
to_email = "XXXXXXX@gmail.com"
ここでは、送信元のメールアドレスをgmail_user、先ほど取得したアプリパスワードをgmail_password、送信先のメールアドレスをto_emailに格納しています。
この時、先ほどアプリパスワードを取得したGoogleアカウントのGmailアドレスをgmail_userに入れるようにしてください。
別のアカウントだとGmail操作ができません。
また、メールの件名と本文をそれぞれsubjectとmessageに格納しています。
Step3:各種変数をセット
続いて先ほど定義したメールアドレスや件名・本文などをライブラリで作成したオブジェクトにセットしていきます。
# メールの設定
msg = MIMEMultipart()
msg["From"] = gmail_user
msg["To"] = to_email
msg["Subject"] = subject
# メール本文の追加
msg.attach(MIMEText(message, "plain"))
まず、msg = MIMEMultipart()
の部分でMIMEMultipart
オブジェクトを作成しています。
そして作成したオブジェクトに対してそれぞれ送信元のメールアドレスと送信先のメールアドレスと件名をセットしていることが分かります。
そして最後にmsg.attach(MIMEText(message, "plain"))
の部分で本文をセットしています。
メールアドレスや件名などはメールが保持するヘッダー情報であり、本文とはセットの方法が異なることを理解しておきましょう!
ここでは、”plain”と指定することでプレーンテキストでのメール送信を定義しています。”html”と指定すればHTML形式のメールを送ることも可能です。
Step4:SMTPサーバーとやり取りしメールを送信
最後にSMTPサーバーに接続しメールを送信していきます。
server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
server.ehlo()
# ログイン
server.login(gmail_user, gmail_password)
# メール送信
server.sendmail(gmail_user, to_email, msg.as_string())
server.close()
この時、smtplib.SMTP_SSL
を使って、GmailのSMTPサーバーにSSL(Secure Sockets Layer)経由で接続します。
SSLを使うことで、通信が暗号化され、セキュリティが確保された状態でメールを送信できます。
smtp.gmail.comはGmailのSMTPサーバーのホスト名であり、Gmailのアカウントからメールを送信する際はこのサーバーを使用します。
465は、SSLを使ったSMTPの標準ポート番号であり、SSL暗号化の通信専用のポートとして使用されます。
続いてserver.ehlo()
の部分で、EHLOコマンドを送信することで、サーバーとクライアントのやり取りが正式に開始されます。
サーバーとのやりとりを始めるための最初のステップで必要になります。
続いてserver.login(gmail_user, gmail_password)
の部分で、SMTPサーバーに対してログインを行い、認証を通します。
先ほどセットしたGmailアドレスとアプリパスワードで認証を通しています。
そして最後にserver.sendmail(gmail_user, to_email, msg.as_string())
の部分でメールを送信しています。
ここではMIMEMultipartオブジェクトにメール本文やヘッダー情報をセットしたものを、as_string()
メソッドを使ってテキスト形式に変換しています。
最後にserver.close()
でSMTPサーバーとの接続を断ちます。
これで完成!
最後に全体のコードを以下にまとめておきます。
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# 送信元のGmailアカウント情報
gmail_user = "XXXXXXX@gmail.com"
gmail_password = "[アプリパスワード]"
# メッセージを定義
subject = "テスト"
message = "これはテストメールです"
to_email = "XXXXXXX@gmail.com"
# メールの設定
msg = MIMEMultipart()
msg["From"] = gmail_user
msg["To"] = to_email
msg["Subject"] = subject
# メール本文の追加
msg.attach(MIMEText(message, "plain"))
server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
server.ehlo()
# ログイン
server.login(gmail_user, gmail_password)
# メール送信
server.sendmail(gmail_user, to_email, msg.as_string())
server.close()
非常に簡単ですね!
冒頭でもお伝えしましたが、Udemyにてさらに踏み込んだメールを絡めた自動化方法について解説していますのでぜひ合わせてチェックしてみてください!
ChatGPTのFunction Callingという機能を使って日本語で指示出しをしてそれを理解した上でスクレイピングやGmail送信をしてくれるエージェントを作っていきます。
【初心者向け】生成系AI時代のPython×自動化!Function Callingを使って煩雑な作業を自動化しよう!
【時間】 | 3.5時間 |
---|---|
【レベル】 | 初級 |
ChatGPTのFunction Callingという機能を存分に使って自動化したいならこれ!
PythonでGmailメール送信 まとめ
ということでここまででPythonを使ったGmail操作について解説してきました!
非常に簡単にGmail操作できるということが理解いただけたと思います。
他の処理と組み合わせることで業務の自動化が考えられますね!
例えば冒頭にも言った通り、メールのリストを持っておいてそのリストに対して定型文を送る場合など!
そのような場合はスプレッドシートやExcelなどにメールのリストを保有しておいて、そこから取得するのがよさそうです。
Pythonを使ったスプレッドシートの操作やExcelの操作は以下の記事で解説していますので合わせてチェックしてみてください。
さらに詳しくAIやデータサイエンスの勉強がしたい!という方は当サイト「スタビジ」が提供するスタビジアカデミーというサービスで体系的に学ぶことが可能ですので是非参考にしてみてください!
AIデータサイエンス特化スクール「スタアカ」
【価格】 | ライトプラン:1280円/月 プレミアムプラン:149,800円 |
---|---|
【オススメ度】 | |
【サポート体制】 | |
【受講形式】 | オンライン形式 |
【学習範囲】 | データサイエンスを網羅的に学ぶ 実践的なビジネスフレームワークを学ぶ SQLとPythonを組み合わせて実データを使った様々なワークを行う マーケティングの実行プラン策定 マーケティングとデータ分析の掛け合わせで集客マネタイズ |
データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!
当メディアが運営するスクールです。
24時間以内の質問対応と現役データサイエンティストによる複数回のメンタリングを実施します!
カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!
他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。
そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコースになっています!
Pythonが初めての人でも学べるようなカリキュラムしておりますので是非チェックしてみてください!
ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったり・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践してもらったりする盛りだくさんの内容になってます!
・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ