Contents
はじめに
この記事では、Pythonのsmtpライブラリを使用してGmail経由でメールを自動的に送信する方法を詳細に解説します。プロジェクトやアプリケーションからユーザーへの通知、定期的なレポートの送信、またはシステムのアラートなど、多くの場面でメール送信機能は非常に有用です。
前準備
まず送信元のGmailアカウントのアプリケーションパスワードが必要です
アプリパスワードの生成には2段階認証プロセスを有効にする必要があります。
事前に2段階認証を有効にしている場合は、下記手順のアプリパスワードの設定からはじめてください。
特に設定をしていない場合は、「2段階認証プロセスの有効化」から設定を行ってください。
① 2段階認証プロセスの有効化
(1) ブラウザーで「Google」のサイトを開き、アプリパスワードを生成したいアカウントにログインした状態にします。その後、「Googleアカウント」のアイコンをクリックし、「Googleアカウントを管理」をクリックします。

(2) 「Googleアカウント」画面になったら、画面左側のメニューから「セキュリティ」をクリックします。(3) 「Googleへのログイン」内にある「2段階プロセス」をクリックします。
2段階認証を設定したら下記のURLにアクセスしアプリケーションパスワードを設定してください
下記の画面に遷移したら適当なアプリ名を入力し、「作成」をクリックします

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


コメント