カテゴリ: Python 更新日: 2026/08/10

PythonでSMTPを使ってメール送信する方法を完全解説!初心者でもわかるsmtplib入門

PythonでSMTPを使ってメールを送る方法(smtplibの活用)
PythonでSMTPを使ってメールを送る方法(smtplibの活用)

先生と生徒の会話形式で理解しよう

生徒

「Pythonでメールを送ることってできますか?」

先生

「はい、できます。Pythonにはsmtplibという機能があり、SMTPという仕組みを使ってメール送信ができます。」

生徒

「SMTPって何ですか?」

先生

「メールを送るためのルールのようなものです。それでは基本から順番に見ていきましょう!」

1. SMTPとは?Pythonメール送信の基本知識

1. SMTPとは?Pythonメール送信の基本知識
1. SMTPとは?Pythonメール送信の基本知識

SMTPとはインターネット上でメールを送るための決まりごとのことです。郵便でいう配達ルールのようなもので、正しいルールに従うことで相手にメールが届きます。

Pythonではsmtplibというライブラリを使うことで、このSMTPを簡単に扱うことができます。初心者でも数行のコードでメール送信プログラムが作れます。

2. smtplibとは?初心者向けにやさしく解説

2. smtplibとは?初心者向けにやさしく解説
2. smtplibとは?初心者向けにやさしく解説

smtplibはPython標準の機能で、特別なインストールなしで使えます。メールサーバーに接続して、メールを送信する役割を持っています。

メールサーバーとは、メールを届けるための中継所のようなものです。例えばGmailなどもメールサーバーを持っています。

3. Pythonでメール送信する基本コード(SMTP接続)

3. Pythonでメール送信する基本コード(SMTP接続)
3. Pythonでメール送信する基本コード(SMTP接続)

まずは一番シンプルなPythonのメール送信コードを見てみましょう。SMTPサーバーに接続してメールを送る基本の流れです。


import smtplib

smtp = smtplib.SMTP("smtp.example.com", 587)
smtp.starttls()
smtp.login("your_email@example.com", "password")

message = "Subject: テストメール\n\nこれはPythonから送ったメールです"
smtp.sendmail("your_email@example.com", "to@example.com", message)

smtp.quit()

このコードでは、SMTPサーバーに接続してログインし、メールを送信しています。

4. Gmailを使ったメール送信方法(実践例)

4. Gmailを使ったメール送信方法(実践例)
4. Gmailを使ったメール送信方法(実践例)

実際によく使われるのがGmailのSMTPです。Gmailを使う場合は専用のサーバーを指定します。


import smtplib

smtp = smtplib.SMTP("smtp.gmail.com", 587)
smtp.starttls()
smtp.login("your@gmail.com", "アプリパスワード")

message = "Subject: Gmailテスト\n\nPythonからGmail送信"
smtp.sendmail("your@gmail.com", "to@example.com", message)

smtp.quit()

Gmailでは通常のパスワードではなく「アプリパスワード」を使う必要があります。

5. メール本文や件名の作り方(初心者向け解説)

5. メール本文や件名の作り方(初心者向け解説)
5. メール本文や件名の作り方(初心者向け解説)

メールには「件名」と「本文」があります。Pythonでは1つの文字列としてまとめて書きます。


subject = "Subject: お知らせ"
body = "これは本文です"

message = subject + "\n\n" + body
print(message)

Subject: お知らせ

これは本文です

改行は「\n」を使うことで表現できます。

6. エラーが出たときの対処方法(初心者がつまずくポイント)

6. エラーが出たときの対処方法(初心者がつまずくポイント)
6. エラーが出たときの対処方法(初心者がつまずくポイント)

メール送信でよくあるエラーとしては、ログイン失敗や接続エラーがあります。

例えばパスワードが間違っている場合や、SMTPサーバーの情報が違うとエラーになります。


try:
    smtp = smtplib.SMTP("smtp.gmail.com", 587)
    smtp.starttls()
    smtp.login("your@gmail.com", "password")
except Exception as e:
    print("エラーが発生しました:", e)

このようにエラー内容を表示すると原因がわかりやすくなります。

7. 複数の宛先にメールを送る方法

7. 複数の宛先にメールを送る方法
7. 複数の宛先にメールを送る方法

複数の人にメールを送りたい場合は、宛先をリストで指定します。


import smtplib

smtp = smtplib.SMTP("smtp.example.com", 587)
smtp.starttls()
smtp.login("your_email@example.com", "password")

to_list = ["a@example.com", "b@example.com"]

message = "Subject: 一斉送信\n\n複数人へ送信しています"
smtp.sendmail("your_email@example.com", to_list, message)

smtp.quit()

リストを使うことで複数のメールアドレスに同時に送信できます。

8. Pythonメール送信の仕組みをイメージで理解しよう

8. Pythonメール送信の仕組みをイメージで理解しよう
8. Pythonメール送信の仕組みをイメージで理解しよう

Pythonでのメール送信は、手紙を送る流れに似ています。自分が手紙を書いて郵便局に出すと、郵便局が相手に届けてくれます。

このときの郵便局がSMTPサーバーにあたります。Pythonはその郵便局に手紙を渡す役割です。

このイメージを持つと、SMTPやsmtplibの動きがとても理解しやすくなります。

まとめ

まとめ
まとめ

PythonでSMTPメール送信の重要ポイント

本記事では、Pythonを使ったメール送信の方法について、SMTPの基本から実践的なコード例まで詳しく解説しました。Pythonの標準ライブラリであるsmtplibを活用することで、初心者でも簡単にメール送信プログラムを作成できる点が大きな魅力です。

SMTPはインターネット上でメールを送るための通信ルールであり、メールサーバーと連携することでメッセージを相手に届けます。PythonではこのSMTPをsmtplibを通して扱うため、複雑な設定を意識せずに実装できます。

特に重要なのは、SMTPサーバーへの接続、TLSによる暗号化、ログイン認証、そしてメール送信という一連の流れを正しく理解することです。この流れを把握することで、Gmailや独自ドメインのメールサーバーなど、さまざまな環境で応用が可能になります。

初心者が押さえるべき実践ポイント

Pythonでメール送信を行う際には、いくつかの重要なポイントがあります。まず、Gmailを使用する場合には通常のパスワードではなくアプリパスワードが必要になります。これはセキュリティ対策の一環であり、正しく設定しないとログインエラーが発生します。

また、メール本文や件名のフォーマットにも注意が必要です。件名は「Subject:」から始め、本文との間には空行を入れる必要があります。このルールを守らないと、メールが正しく表示されないことがあります。

さらに、複数宛先への送信やエラーハンドリングを実装することで、実務でも使える実用的なプログラムに仕上げることができます。特に例外処理は、トラブル発生時の原因特定に非常に役立ちます。

応用できる活用シーン

PythonによるSMTPメール送信は、さまざまな場面で活用できます。例えば、システムのエラー通知、自動レポート送信、会員登録時の確認メール、定期的なリマインド通知などです。

また、業務効率化の観点でも非常に有用であり、手動で行っていたメール送信作業を自動化することで、大幅な時間短縮が可能になります。Pythonはシンプルな文法で扱いやすいため、初心者から実務レベルまで幅広く対応できるのも特徴です。

まとめサンプルプログラム(実用テンプレート)

最後に、これまでの内容を踏まえた実用的なPythonメール送信プログラムを紹介します。エラー処理と複数宛先にも対応した構成になっています。


import smtplib

def send_mail():
    try:
        smtp = smtplib.SMTP("smtp.gmail.com", 587)
        smtp.starttls()
        smtp.login("your@gmail.com", "アプリパスワード")

        subject = "Subject: 自動送信メール"
        body = "これはPythonで自動送信されたメールです"
        message = subject + "\n\n" + body

        to_list = ["a@example.com", "b@example.com"]

        smtp.sendmail("your@gmail.com", to_list, message)
        smtp.quit()

        print("メール送信成功")

    except Exception as e:
        print("エラー発生:", e)

send_mail()

このように関数化することで、再利用性が高まり、さまざまな場面で応用しやすくなります。PythonによるSMTPメール送信は、シンプルながら非常に強力な機能であり、プログラミング学習の中でも実用性の高いスキルといえるでしょう。

先生と生徒の振り返り会話

生徒

「Pythonでメール送信がこんなに簡単にできるとは思いませんでした。」

先生

「そうですね。SMTPとsmtplibの仕組みを理解すれば、数行のコードで実現できます。」

生徒

「SMTPサーバーに接続して、ログインして、送信する流れが大事なんですね。」

先生

「その通りです。さらにエラー処理や複数送信を組み合わせると、実務でも使えるレベルになります。」

生徒

「Gmailの場合はアプリパスワードが必要な点も重要ですね。」

先生

「はい、それを知らないとログインでつまずくことが多いです。セキュリティの観点でも重要なポイントです。」

生徒

「今回学んだ内容を使えば、自動通知やレポート送信も作れそうです。」

先生

「その発想はとても良いですね。Pythonのメール送信は業務効率化にも直結するスキルなので、ぜひ活用してください。」

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

Python のネットワークプログラミングの記事一覧へ
新着記事
New1
Claude
ClaudeにPHPデバッグを相談するコツ!原因候補を仮説に分けて確認する質問例
New2
Python
PythonのCLIで対話型メニューを作る方法(prompt_toolkit)
New3
ChatGPT
ChatGPTでPHPコードを理解する方法!読めない処理をわかりやすく質問しよう
New4
PHP
PHP の定数(define, const)を使った設定方法を徹底解説!
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.2
Java&Spring記事人気No2
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.3
Java&Spring記事人気No3
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.4
Java&Spring記事人気No4
Python
PythonでSQLiteを使う方法を完全ガイド!初心者でもわかるデータベース基本操作
No.5
Java&Spring記事人気No5
Python
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.6
Java&Spring記事人気No6
Claude
ClaudeにPHPリファクタリングを相談するコツ!目的・前提・制約を仕様メモにまとめるコツ
No.7
Java&Spring記事人気No7
Python
Pythonのシェルスクリプトを自動実行する方法(cron & Task Scheduler)
No.8
Java&Spring記事人気No8
PHP
PHPのMVCパターンを完全解説!初心者でもわかるModel・View・Controller