Python

【Python】Gmailからメール送信を自動化するサンプルコード

この記事は約6分で読めます。

 

はじめに

 

この記事では、Pythonのsmtpライブラリを使用してGmail経由でメールを自動的に送信する方法を詳細に解説します。プロジェクトやアプリケーションからユーザーへの通知、定期的なレポートの送信、またはシステムのアラートなど、多くの場面でメール送信機能は非常に有用です。

 

前準備

 

まず送信元のGmailアカウントのアプリケーションパスワードが必要です

 

アプリパスワードの生成には2段階認証プロセスを有効にする必要があります。
事前に2段階認証を有効にしている場合は、下記手順のアプリパスワードの設定からはじめてください。
特に設定をしていない場合は、「2段階認証プロセスの有効化」から設定を行ってください。

① 2段階認証プロセスの有効化

(1) ブラウザーで「Google」のサイトを開き、アプリパスワードを生成したいアカウントにログインした状態にします。その後、「Googleアカウント」のアイコンをクリックし、「Googleアカウントを管理」をクリックします。

 

(2) 「Googleアカウント」画面になったら、画面左側のメニューから「セキュリティ」をクリックします。(3) 「Googleへのログイン」内にある「2段階プロセス」をクリックします。

 

2段階認証を設定したら下記のURLにアクセスしアプリケーションパスワードを設定してください

Sign in - Google Accounts

 

下記の画面に遷移したら適当なアプリ名を入力し、「作成」をクリックします

 

 

クリックすると16桁の英数字(xxxx xxxx xxxx xxxx)が表示されるのでそれをメモに保存してください

これで前準備は完了です

 

Pythonを使用したGmail経由でのメール自動送信の詳細な解説

 

必要なライブラリのインポート

 

まず、メール送信に必要なライブラリをインポートします。smtplibはSMTPプロトコルクライアントを提供し、emailモジュールはメールの作成をサポートします。

 

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

 

SMTPサーバーの設定

 

GmailのSMTPサーバーを使用してメールを送信します。このためには、以下の情報を設定する必要があります。

  • SMTP_SERVER: GmailのSMTPサーバーのアドレスです。
  • SMTP_PORT: GmailのSMTPサーバーのポート番号です。通常は587を使用し、TLSを利用します。
  • SMTP_USERSMTP_PASSWORD: Gmailアカウントのユーザー名とパスワードです。

 

SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587
SMTP_USER = 'yourgmail@gmail.com'
SMTP_PASSWORD = 'xxxx xxxx xxxx xxxx'

 

メールの内容と送信機能の定義

 

send_email関数を定義し、メールの送信者、受信者、件名、本文を設定します。

def send_email(to_email, subject, body):
    message = MIMEMultipart()
    message['From'] = SMTP_USER
    message['To'] = to_email
    message['Subject'] = subject
    message.attach(MIMEText(body, 'plain'))

    try:
        server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
        server.starttls()
        server.login(SMTP_USER, SMTP_PASSWORD)
        server.sendmail(SMTP_USER, to_email, message.as_string())
        print('メールを送信しました')
    except Exception as e:
        print(f'メール送信に失敗しました: {e}')
    finally:
        server.quit()

 

実際のメール送信

 

最後に、実際にメールを送信する例を示します。宛先、件名、メール本文を指定してsend_email関数を呼び出します。

send_email('test@example.com', 'テストメール', 'これはテストメールです')

 

コード全体

 

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# SMTPサーバーの設定
SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587
SMTP_USER = 'xxxx@gmail.com' # 送信元のGmailアカウント
SMTP_PASSWORD = 'xxxx xxxx xxxx xxxx' # アプリケーションパスワード

# メールの内容
def send_email(to_email, subject, body):
  # メールのメッセージを作成
  message = MIMEMultipart()
  message['From'] = SMTP_USER
  message['To'] = to_email
  message['Subject'] = subject

  # メール本文の作成
  message.attach(MIMEText(body, 'plain'))

  try:
    # SMTPサーバーへの接続とログイン
    server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
    server.starttls()  # TLSの開始
    server.login(SMTP_USER, SMTP_PASSWORD)

    # メールの送信
    server.sendmail(SMTP_USER, to_email, message.as_string())
    print('メールを送信しました')
  except Exception as e:
    print(f'メール送信に失敗しました: {e}')
  finally:
    # SMTPサーバーとの接続を閉じる
    server.quit()

# メール送信の例
send_email('oruka199665@yahoo.co.jp', 'テストメール', 'これはテストメールです')

 

注意点とセキュリティ

 

  • Gmailを使用してメールを送信するには、”安全性の低いアプリのアクセス”を許可する設定が必要ですが、これは推奨されません。代わりに「アプリパスワード」を生成して使用することが推奨されます。
  • 実際に運用する際は、パスワードやセンシティブな情報は環境変数から取得するか、安全な方法で管理してください

 

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

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