PythonでGmail自動送信!簡単にできるメール送信スクリプトの作り方

はじめに

メール送信を自動化することで、業務効率化や通知の自動化を実現することができます。本記事では、Pythonを使ってGmailからメールを送信するスクリプトを作成し、その手順を解説します。

初心者でも理解しやすいように、コードや設定手順を詳しく説明します。


やりたいこと

Pythonを使って、Gmailを利用した簡単なメール送信機能を構築します。

  1. Gmailサーバーを使用
  2. HTML形式のメールを送信
  3. 2段階認証およびアプリパスワードの設定を活用

準備するもの

ライブラリ

以下のPythonライブラリを使用します。

  1. smtplib: SMTPプロトコルを使用してメールを送信する標準ライブラリ。
  2. ssl: 安全な通信を行うための標準ライブラリ。
  3. email.mime.text (MIMEText): メールの内容をHTML形式で作成するためのモジュール。

以下のコマンドでPythonをインストールした環境で実行してください。

pip install ssl email

※ 標準ライブラリのため、通常インストール済みです。

2段階認証、アプリパスワード等の設定手順

Gmailでメールを送信するには、セキュリティ設定を正しく行う必要があります。

1. Gmailアカウントで2段階認証を有効にする

  1. Googleアカウントのセキュリティ設定にアクセス。
  2. 「2段階認証プロセス」を有効化します。
  3. スマートフォンやメールアドレスを使って設定を完了します。

2.アプリパスワードを生成する

以下のリンクからアプリパスワードの設定を行う
https://myaccount.google.com/apppasswords

  1. アプリ名を設定し、16桁のパスワードを表示させる
  2. 表示される16文字のアプリパスワードをコピー(後述のコードで使用します)

ディレクトリ構成

スクリプトとアカウント情報を分離して管理するため、以下のようなディレクトリ構成を推奨します。

project_directory/
    gmail_send.py          # メインスクリプト
    my_account.py    # アカウント情報(アプリパスワードなど)

コードスクリプト

my_account.py

myAccountは、Gmailのアカウント情報を分離して管理するためのファイルです。
このファイルには、メールアドレスとアプリパスワードを記載します。

以下のように記述します。

my_account.py
account = "your_email@gmail.com" # 使用するGメールアドレス
password = "****************" # 16桁のアプリパスワード

my_account.pyには機密情報を含むため、Gitなどのバージョン管理システムに追加しないように注意してください

gmail_send.py

以下がGmailを使った自動メール送信のPythonコードです。

import smtplib, ssl
from email.mime.text import MIMEText
import my_account as gmail #アカウント情報

#メイン処理
def send_email(): #メール送信のメイン処理を実行する関数。
    msg = make_text(
        to_address=gmail.account,            # 宛先(自身のメールアドレスを指定)
        subject=' 送信テスト',                # メールの件名
        body='こんにお世話になります。yamaです。' # メール本文
    )
    #メール送信
    send_gmail(msg)

#メールデータを生成する
def make_text(to_address, subject, body):
    msg = MIMEText(body, 'html') # 本文をHTML形式で作成
    msg['Subject'] = subject     #件名
    msg['To'] = to_address       #宛先
    msg['From'] = gmail.account  #送信元
    return msg

#Gmailに接続
def send_gmail(msg):
    #Gmailサーバーに接続
    server = smtplib.SMTP_SSL(
        'smtp.gmail.com', 465,
        context=ssl.create_default_context()
    )
    server.set_debuglevel(0) #ログ出力
    #ログインしてメールを送信
    server.login(gmail.account, gmail.password)
    server.send_message(msg)

if __name__ == '__main__':
    send_email()
    print('ok.')

コードスクリプト

コンソールに「ok.」と表示されます。

Gmailを確認すると、メールが確認できます。


コード解説

1. メールデータの作成(make_mime_text関数)

この関数は、HTML形式のメールデータを作成します。

  1. 引数
    mail_to: 宛先のメールアドレス。
    subject: メールの件名。
    body: メール本文。
  2. 処理内容:
    MIMETextを使って、メール本文をHTML形式に変換。
    件名、送信先、送信元をメールデータに設定。
2. Gmailサーバーへの接続と送信(send_gmail関数)

この関数は、GmailのSMTPサーバーに接続し、メールを送信します。

  1. SMTP_SSLを使用:
    Gmailサーバーに暗号化された接続を確立します。
    サーバー名: smtp.gmail.com
    ポート: 465。
  2. loginメソッド:
    Gmailアカウントとアプリパスワードを使用して認証。
  3. send_messageメソッド:
    作成したメールデータ(msg)を送信します。
3. メイン処理(send_test_email関数)

この関数は、メールデータを作成し、送信する全体の流れを制御します。

  1. make_mime_textを呼び出し:
    メールデータを生成。
  2. send_gmailを呼び出し:
    生成したメールデータを実際に送信。

まとめ

本記事では、Pythonを使用してGmailを利用した自動メール送信スクリプトを作成する方法を解説しました。以下のポイントをカバーしました:

  • Gmailのセキュリティ設定(2段階認証とアプリパスワードの設定)
  • Python標準ライブラリを用いた安全なメール送信
  • ディレクトリ構成とスクリプト管理のベストプラクティス

このスクリプトは、業務や通知の自動化に役立つツールとして活用できます。次のステップとして、HTMLメールの装飾や、複数宛先への送信を追加するなど、機能を拡張してみてください!

コメント

タイトルとURLをコピーしました