この記事では、Pythonの標準ライブラリであるsmtplibモジュールを使い、GmailなどのSMTPサーバー経由でEメールを送信するスクリプトの作成方法を解説します。スパムとして判定されないよう、適切にフォーマットされたメールを作成するemailモジュールも併せて紹介します。
1. 準備:Gmailのアプリパスワード
現在のセキュリティ基準では、多くのメールサービス(特にGmail)で、通常のログインパスワードを直接プログラムから使用することはできません。代わりに、アプリパスワードを生成して使用する必要があります。
- Googleアカウントで2段階認証プロセスを有効にします。
- Googleアカウントのセキュリティ設定ページから「アプリパスワード」を生成します。
- 生成された16文字のアプリパスワードを、スクリプト内で通常のパスワードの代わりに使用します。
この手順により、アカウントのセキュリティを保ちながら、プログラムからのメール送信が可能になります。
2. Eメールのメッセージを構築する
スパムフィルタを回避し、件名や送信者、日本語の本文を正しく表示するためには、emailモジュールを使ってメッセージを構築することが推奨されます。
from email.mime.text import MIMEText
from email.header import Header
# 送信するメッセージ内容
body = "これはPythonから送信されたテストメールです。\n本文は複数行にわたります。"
# メッセージオブジェクトを作成
# MIMEText('本文', 'エンコーディング形式', '文字コード')
msg = MIMEText(body, 'plain', 'utf-8')
# ヘッダー情報を設定
msg['Subject'] = Header('Pythonからのテストメール', 'utf-8')
msg['From'] = 'sender@example.com'
msg['To'] = 'recipient@example.com'
3. SMTPサーバーへの接続とメール送信
SMTPサーバーとの通信はsmtplibモジュールが担当します。Gmailの場合、SSL暗号化通信が一般的なためsmtplib.SMTP_SSLを使用します。
処理の流れは以下の通りです。
smtplib.SMTP_SSL()でGmailのSMTPサーバーに接続する。smtp.login()で、メールアドレスと生成したアプリパスワードを使ってログインする。smtp.send_message()で、作成したメッセージオブジェクトを送信する。smtp.quit()でサーバーから切断する。
with文を使うと、処理の終了後やエラー発生時に自動で接続が閉じられるため安全です。
4. 完成したコード全体
これまでの要素をすべて統合した、Gmailからメールを送信する完全なスクリプトを以下に示します。
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# --- 設定 ---
SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 465 # GmailのSSLポート
SENDER_EMAIL = 'your_email@gmail.com' # 自身のGmailアドレス
APP_PASSWORD = 'your_16_character_app_password' # 生成したアプリパスワード
RECIPIENT_EMAIL = 'recipient@example.com' # 送信先アドレス
# --- メッセージの構築 ---
body = "これはPythonスクリプトから自動送信されたテストメールです。"
msg = MIMEText(body, 'plain', 'utf-8')
msg['Subject'] = Header('Pythonからのテストメール', 'utf-8')
msg['From'] = SENDER_EMAIL
msg['To'] = RECIPIENT_EMAIL
# --- メールの送信 ---
try:
# with文で安全に接続
with smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT) as smtp:
print("SMTPサーバーにログインしています...")
smtp.login(SENDER_EMAIL, APP_PASSWORD)
print("メールを送信しています...")
smtp.send_message(msg)
print("メールを正常に送信しました。")
except Exception as e:
print(f"エラー: メールの送信に失敗しました。 - {e}")
まとめ
Pythonでメールを送信するには、smtplibモジュールでSMTPサーバーとの通信を確立し、emailモジュールで適切にフォーマットされたメッセージオブジェクトを構築します。Gmailなどの現代的なサービスでは、セキュリティのために通常のパスワードの代わりにアプリパスワードを使用する必要があります。これらの要素を組み合わせることで、通知の自動化など、様々な応用が可能なメール送信プログラムを作成できます。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
