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