【Python】10 分でできる! Gmail を送信する手順【smtplib 超入門】

Python
  1. この記事でできること
    1. 1. PythonだけでGmailを送信できるようになる
    2. 2. smtplibの基本構文をマスター
    3. 3. Gmailの設定方法とセキュリティ対策も解説
  2. 事前準備|GmailとPython環境を整えよう
    1. ステップ1:Pythonをインストールする(※未インストールの場合)
    2. ステップ2:Gmailの「アプリパスワード」を発行する方法【画像付き】
      1. ■ アプリパスワードとは?
      2. ■ アプリパスワードを発行する手順
    3. ステップ3:smtplibとemailモジュールの確認(標準ライブラリでOK)
      1. ■ 動作確認の方法(ターミナル or コマンドプロンプト)
  3. PythonでGmailを送信する基本コード
    1. 最小構成のサンプルコード【まずは動かしてみよう】
    2. コードの各部分をやさしく解説(SMTPサーバー、ポート番号、ログインなど)
      1. ① import smtplib / from email.message import EmailMessage
      2. ② msg.set_content(...)
      3. ③ msg["Subject"] / msg["From"] / msg["To"]
      4. ④ smtplib.SMTP_SSL("smtp.gmail.com", 465)
      5. ⑤ smtp.login(...)
      6. ⑥ smtp.send_message(msg)
    3. 補足:よくあるミスとその対処法
  4. Gmail送信時のエラー対策とセキュリティの注意点
    1. 「smtplib.SMTPAuthenticationError」が出る場合の対処法
      1. よくある原因と対処法
    2. 2段階認証と「安全性の低いアプリ」の関係性
      1. なぜ2段階認証が必要?
      2. 2段階認証の設定方法
    3. パスワードをコードに書かずに管理するには?【環境変数 or .env】
      1. 安全にパスワードを管理する方法
    4. セキュリティ対策をしながら、Gmail送信を安心・快適に
  5. 応用編|HTMLメールや添付ファイルも送ってみよう
    1. HTML形式のメールを送る方法【email.mime】
      1. 必要なライブラリ
      2. サンプルコード
      3. ポイント
    2. ファイルを添付して送る方法【MIMEMultipartの活用】
      1. 必要なライブラリ
      2. サンプルコード
      3. 注意点
    3. 応用を覚えれば、自動化がもっと楽しくなる
  6. トラブルシューティング|よくあるエラーとその原因
    1. 「ConnectionRefusedError: [Errno 111]」の意味と対処法
      1. 主な原因と対処法
    2. メールがスパム判定される原因と回避策
      1. スパム判定される主な原因
      2. 回避するためのポイント
    3. トラブル対応も学びの一部。経験があなたの武器になる
  7. まとめ|Gmail送信はPythonでここまで簡単にできる!
    1. 1. 最初はシンプルに、徐々に機能を追加していこう
      1. 具体的なステップアップ例:
    2. 2. セキュリティ対策とメールマナーも忘れずに
      1. セキュリティ面で大切なこと
      2. メールマナーの基本
    3. 3. あなたのスキルが、日々の業務をもっとスマートにする
    4. 最後に:一歩ずつで大丈夫。あなたの「できた」が未来を変える

この記事でできること

「Pythonでメールを送りたいけど、難しそう…」と感じていませんか?
本記事では、プログラミング初心者でもたった10分で Gmail を送信できる方法を、わかりやすくステップ形式で解説します。

実際にコードを動かしながら学べるので、文章を読むだけでなく「手を動かして学ぶ」実践型の記事です。以下の3つのスキルを身につけることができます。

1. PythonだけでGmailを送信できるようになる

  • Googleの無料サービス「Gmail」と、Pythonに標準で備わっている「smtplib」を使って、メールを自動で送信する方法を紹介します。
  • 特別なソフトや複雑な設定は不要。必要なのは、Pythonが動く環境Googleアカウントだけです。

2. smtplibの基本構文をマスター

  • 「smtplib(エスエムティーピーリブ)」は、Pythonに標準搭載されているメール送信のためのモジュールです。
  • 難しい専門用語は避けて、なぜこのコードを書くのか?がしっかり理解できるように構成しています。
  • 本記事では、次のような基本コードの意味を1つ1つ解説します。
import smtplib

with smtplib.SMTP_SSL("smtp.gmail.com", 465) as smtp:
    smtp.login("your_email@gmail.com", "your_app_password")
    smtp.sendmail("your_email@gmail.com", "to_email@example.com", "Hello from Python!")

3. Gmailの設定方法とセキュリティ対策も解説

メールを送るには、Gmail側でも少しだけ設定が必要です。特に以下のポイントは初心者がつまずきやすいので、画像付きで丁寧に解説しています。

  • Gmailでの「アプリパスワード」の発行方法
  • 2段階認証の影響と対処法
  • パスワードをソースコードに書かない方法(環境変数の使い方)

セキュリティを意識した設定ができるようになることで、より安心して自動メール送信を運用できます。

この記事を読み終える頃には、次のような状態になっているはずです。

  • Pythonでメールを送る「最初の一歩」を体験できた
  • 自分の手でコードを書いて、メールを飛ばす喜びを感じた
  • 自動化や通知など、もっと活用したくなるアイデアが湧いてきた

「Pythonって、こんなにすぐ使えるんだ!」
そんな小さな感動を、あなたにもぜひ体験してほしいと思っています。

事前準備|GmailとPython環境を整えよう

PythonでGmailを送信するには、いくつかの準備が必要です。
といっても、心配はいりません。どれも簡単なステップで完了します。

この章では、PythonとGmailの環境を整えるために必要な3つのステップを解説します。

ステップ1:Pythonをインストールする(※未インストールの場合)

Pythonがまだパソコンにインストールされていない方は、以下のサイトを参考に進めてください。

🔗 Windows での Python インストール手順(日本語解説)

インストールが完了したら、次のステップへ進みましょう。

ステップ2:Gmailの「アプリパスワード」を発行する方法【画像付き】

Pythonからメールを送るには、Gmailのログイン情報を使う必要があります。
しかし、通常のパスワードをそのまま使うのは危険です。
そのため、Googleでは「アプリパスワード」という仕組みが用意されています。

■ アプリパスワードとは?

  • 通常のログイン用パスワードとは別に、一時的な専用パスワードを発行する仕組み
  • 外部アプリ(今回はPython)から安全にGmailを使うためのセキュリティ対策

■ アプリパスワードを発行する手順

  1. Google アカウントにログインする
    👉 Google アカウント セキュリティ設定
  2. 「2段階認証プロセス」が有効であることを確認
     ※未設定の方は、ここでオンにしてください。
  3. ページ下部の「アプリ パスワード」をクリック
  4. アプリの選択:「メール」
     デバイスの選択:「Windows パソコン」など任意の名前
  5. 「生成」をクリックすると、16桁の英数字が表示される

この16桁のコードは、Pythonのコード内で使います。必ずメモしておきましょう。

ステップ3:smtplibとemailモジュールの確認(標準ライブラリでOK)

Pythonからメールを送るには、次の2つのモジュールを使います。

  • smtplib:メール送信に使うモジュール(SMTP)
  • email:メールの本文や差出人・宛先を構成するモジュール

これらはPythonに最初から組み込まれている標準ライブラリなので、特別なインストールは不要です。

■ 動作確認の方法(ターミナル or コマンドプロンプト)

以下のコードを実行してエラーが出なければOKです。

import smtplib
import email

print("smtplib と email モジュールは正常に使えます。")

これで、GmailとPythonの準備はバッチリです。
次はいよいよ、Pythonで実際にメールを送ってみるステップに進みましょう。

PythonでGmailを送信する基本コード

ここまでの準備ができたら、いよいよPythonのコードを書いていきます。
最初はとにかく「動かすことが目的」。複雑な機能は後回しでOKです。

「Pythonから本当にメールが送れるんだ!」
そんな感動体験を、まずは一緒に体験しましょう。

最小構成のサンプルコード【まずは動かしてみよう】

以下のコードをコピーして、あなたの環境で実行してみてください。
あらかじめ用意しておいたアプリパスワードと、自分のGmailアドレスを使います。

import smtplib
from email.message import EmailMessage

# メールの設定
msg = EmailMessage()
msg.set_content("PythonからGmail送信に成功しました!")
msg["Subject"] = "テストメール"
msg["From"] = "あなたのメールアドレス@gmail.com"
msg["To"] = "送信先メールアドレス@example.com"

# SMTPサーバーへ接続して送信
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as smtp:
    smtp.login("あなたのメールアドレス@gmail.com", "アプリパスワード")
    smtp.send_message(msg)

実行後、受信ボックスにメールが届けば成功です!

コードの各部分をやさしく解説(SMTPサーバー、ポート番号、ログインなど)

初心者がつまずきやすいポイントを、順番にやさしく解説します。

① import smtplib / from email.message import EmailMessage

  • smtplib はメールを送信するための標準ライブラリです。
  • EmailMessage はメール本文や件名をわかりやすく管理できます。

余計なモジュールを使わず、Pythonだけで完結できるのが魅力です。

② msg.set_content(...)

  • ここでメール本文を指定します。
  • シンプルなテキスト形式でOK。改行も自由に入れられます。

③ msg["Subject"] / msg["From"] / msg["To"]

  • 件名、送信元アドレス、送信先アドレスを設定します。
  • 送信元には、自分のGmailアドレスを入力してください。

④ smtplib.SMTP_SSL("smtp.gmail.com", 465)

  • GmailのSMTPサーバーにSSLで接続しています。
  • smtp.gmail.com は Gmailのメール送信用サーバー
  • 465 はSSL通信に使うポート番号です

⑤ smtp.login(...)

  • Gmailログイン時の認証です。
  • 通常のパスワードではなく、アプリパスワードを入力してください。

⑥ smtp.send_message(msg)

  • 最後に、作成したメールを実際に送信します。
  • メールの内容は msg にまとまっているので、これをそのまま渡せばOK。

補足:よくあるミスとその対処法

エラー内容原因と対処法
smtplib.SMTPAuthenticationErrorアプリパスワードが間違っている、または2段階認証が未設定
メールが届かない迷惑メールフォルダに振り分けられていないか確認
エンコードエラーメール本文に全角文字を使っている場合はUTF-8指定が必要な場合も

最小構成のメール送信ができれば、あとは応用するだけです。
件名を変えたり、複数の宛先に送ったり、HTML形式にしたりと、活用の幅は無限大です。

Gmail送信時のエラー対策とセキュリティの注意点

PythonからGmailを送信するとき、多くの初心者が最初にぶつかるのが「エラー」と「セキュリティ設定」です。
ここでは、特に発生しやすいエラーとその対策、そして安全にメールを送るための知識を解説します。

「うまくいかない…」で止まらず、原因を知れば、必ず突破できます。焦らず、一つずつ確認していきましょう。

「smtplib.SMTPAuthenticationError」が出る場合の対処法

このエラーは、Gmailへのログインに失敗した場合に表示されます。

よくある原因と対処法

原因対処方法
アプリパスワードを使っていない通常のログインパスワードではなく、アプリパスワードを使ってください
入力したメールアドレスが間違っているスペルミスや余計な空白がないか確認
2段階認証が未設定Google アカウントのセキュリティ設定で「2段階認証プロセス」を有効にしてください

2段階認証と「安全性の低いアプリ」の関係性

以前は、Gmailに「安全性の低いアプリの許可」という設定がありました。
しかし、Googleは2022年以降この機能を廃止し、アプリパスワードによる接続を推奨しています。

なぜ2段階認証が必要?

  • 2段階認証を有効にすることで、アプリパスワードが利用可能になります。
  • 通常のログインパスワードを外部アプリに直接使う必要がなくなるため、安全性が向上します。

2段階認証の設定方法

  1. Google アカウントのセキュリティページにアクセス
  2. 「2段階認証プロセス」をオンにする
  3. スマホに届く認証コードで本人確認を完了

アプリパスワードは、2段階認証がオンになっていないと発行できません。
セキュリティ対策としても、この設定は必須です。

パスワードをコードに書かずに管理するには?【環境変数 or .env】

メール送信用のパスワードをPythonコードの中に直接書くのは危険です。
特に、コードをGitHubなどに公開した場合、意図せず漏洩する可能性があります。

安全にパスワードを管理する方法

方法①:環境変数を使う

  • OSの環境に変数として保存しておき、Pythonコードから呼び出します。
import os
password = os.environ.get("GMAIL_APP_PASSWORD")
  • Windowsの場合:コマンドプロンプトで設定 bashコピーする編集するsetx GMAIL_APP_PASSWORD "アプリパスワード"
setx GMAIL_APP_PASSWORD "アプリパスワード"

方法②:.env ファイルを使う(Python-dotenv)

  1. プロジェクト直下に .env ファイルを作成
GMAIL_APP_PASSWORD=あなたのアプリパスワード
  1. Pythonコードで読み込む
from dotenv import load_dotenv
import os

load_dotenv()
password = os.getenv("GMAIL_APP_PASSWORD")
  1. .env ファイルは .gitignore に追加して、Gitで管理しないようにする

セキュリティ対策をしながら、Gmail送信を安心・快適に

メール送信は便利な一方で、セキュリティを意識しないとリスクにもなりかねません
アプリパスワードの利用、2段階認証の設定、そしてパスワード管理の工夫――
これらを押さえておけば、安心してPythonからGmailを送信できます。

応用編|HTMLメールや添付ファイルも送ってみよう

基本的なメール送信ができたら、次は一歩進んだ機能に挑戦してみましょう。
Pythonでは、HTML形式のメールファイルを添付したメールも送ることができます。

この応用テクニックをマスターすれば、ビジネス用途や通知メール、自動レポート配信など、さらに実践的なシーンで活用できるようになります。

HTML形式のメールを送る方法【email.mime】

テキストだけのメールはシンプルですが、視覚的に伝えたいときにはHTML形式のメールが便利です。
例えば、太字や色文字、リンクなどを使って、読みやすく魅力的なメールが作れます。

必要なライブラリ

Pythonの標準ライブラリ email.mime.text を使います。

サンプルコード

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

# メールの設定
msg = MIMEMultipart("alternative")
msg["Subject"] = "HTMLメールのテスト"
msg["From"] = "あなたのメールアドレス@gmail.com"
msg["To"] = "送信先@example.com"

# HTMLコンテンツを用意
html_content = """
<html>
  <body>
    <h1 style="color:blue;">こんにちは!</h1>
    <p>これは <b>Python</b> から送った <span style="color:red;">HTMLメール</span> です。</p>
    <a href="https://www.python.org">Python公式サイト</a>
  </body>
</html>
"""

# HTML部分を本文として追加
msg.attach(MIMEText(html_content, "html"))

# Gmailに接続して送信
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as smtp:
    smtp.login("あなたのメールアドレス@gmail.com", "アプリパスワード")
    smtp.send_message(msg)

ポイント

  • MIMEMultipart("alternative") を使うことで、HTMLとテキストを切り替え可能なメールになります。
  • 見た目が華やかになる分、HTMLタグの閉じ忘れや構文ミスに注意が必要です。

ファイルを添付して送る方法【MIMEMultipartの活用】

メールにPDFや画像、CSVファイルなどを添付する方法も、ビジネスシーンでは欠かせません。
自動レポートや請求書などを送信する処理に役立ちます。

必要なライブラリ

  • email.mime.base
  • email.mime.application
  • email.encoders

サンプルコード

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
import os

# メールの設定
msg = MIMEMultipart()
msg["Subject"] = "ファイル添付テスト"
msg["From"] = "あなたのメールアドレス@gmail.com"
msg["To"] = "送信先@example.com"

# 本文を追加(テキスト形式)
body = "このメールにはファイルが添付されています。ご確認ください。"
msg.attach(MIMEText(body, "plain"))

# 添付ファイルのパス
file_path = "sample.pdf"

# 添付ファイルを読み込み
with open(file_path, "rb") as f:
    file = MIMEApplication(f.read(), _subtype="pdf")
    file.add_header("Content-Disposition", "attachment", filename=os.path.basename(file_path))
    msg.attach(file)

# Gmailに接続して送信
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as smtp:
    smtp.login("あなたのメールアドレス@gmail.com", "アプリパスワード")
    smtp.send_message(msg)

注意点

  • ファイル名は os.path.basename() で安全に指定しましょう。
  • 添付ファイルがウイルスと誤判定されないよう、信頼できるファイル形式と内容を心がけてください。

応用を覚えれば、自動化がもっと楽しくなる

ここまでくれば、Pythonによるメール送信の可能性は一気に広がります。

  • 毎朝決まった時刻に天気やニュースをHTMLメールで通知
  • 日次の売上報告をCSVにして添付し、自動で送信
  • 複数の宛先に一括でレポートを配信

日々の業務にちょっとした便利さを加えられるだけでなく、「自分のコードで仕事がラクになった!」という感動も味わえます。

トラブルシューティング|よくあるエラーとその原因

PythonからGmailを送信する際、「なぜか送れない…」というトラブルに直面することがあります。
ここでは、よくある2つのエラーを取り上げ、それぞれの原因と解決策をわかりやすく解説します。

焦らず、一つずつチェックしていきましょう。
このトラブル対応を経験すれば、さらに一歩上のスキルが身につきます。

「ConnectionRefusedError: [Errno 111]」の意味と対処法

このエラーは、PythonがSMTPサーバーに接続できなかったことを示しています。
特に SMTP_SSL を使って Gmail に接続する場合に、初心者がよく直面するエラーです。

主な原因と対処法

原因解決策
インターネット接続が不安定ブラウザで他のサイトにアクセスできるか確認する
ファイアウォールやセキュリティソフトが通信をブロックしている一時的に無効にして再実行(※自己責任)
ポート番号が間違っているGmailでは 465(SSL)を使用することを確認
SMTPサーバー名が誤っているsmtp.gmail.com に正しく設定されているか確認
VPNや企業ネットワークにより制限されているVPNをオフにするか、家庭のネット回線に切り替える

接続エラーは焦らず、ネットワーク環境や設定の見直しから始めましょう。

メールがスパム判定される原因と回避策

「メールは送れたけど、相手の迷惑メールフォルダに入ってしまった…」
これはPythonからのメール送信でよくある落とし穴です。

スパム判定される主な原因

  • 件名や本文が短すぎる、あるいは不自然な内容
  • HTMLメールに画像やリンクが多すぎる
  • 差出人名やアドレスがあいまい・信頼性が低い
  • Gmailで本人確認が済んでいない(新規アカウント)
  • 1日に大量のメールを一斉送信している

回避するためのポイント

  1. 件名や本文は明確に
    • 例:「テスト」ではなく「Pythonでの送信テストです」など具体的に書く
  2. 差出人情報を明記する
    • From: のアドレスと表示名を正しく設定し、Gmailで設定した名前と一致させる
  3. 画像やリンクの使用は控えめに
    • HTMLメールを使う場合も、シンプルにまとめる
  4. 自分宛てにも送ってみる
    • 一度、自分の別アドレスに送信して迷惑メールに入らないか確認する
  5. Gmailの「メールの送信ガイドライン」に準拠する

トラブル対応も学びの一部。経験があなたの武器になる

エラーに遭遇すると、誰でも不安になります。
でも、その一歩を自分で解決できたときの達成感は、次の挑戦への自信につながります。

今回紹介した対策をもとに、少しずつ「なぜエラーが起きるのか」を考えられるようになると、
あなたのプログラミングは一気にレベルアップします。

まとめ|Gmail送信はPythonでここまで簡単にできる!

PythonでGmailを送る――
一見ハードルが高そうに感じたかもしれませんが、実際に手を動かしてみると「意外とシンプル!」と感じたのではないでしょうか?

本記事では、基本から応用まで、Pythonを使ったGmail送信の方法を一通りご紹介しました。
ここで、今回の内容を振り返りながら、これからの活用のヒントをお届けします。

1. 最初はシンプルに、徐々に機能を追加していこう

  • 最初は1通のテキストメールを送るだけで十分です。
  • できたら次に、HTML形式のメールや添付ファイルの送信にチャレンジ。
  • 焦らず、少しずつステップアップしていくことが成功のコツです。

具体的なステップアップ例:

  1. テキストメールの送信
  2. HTMLメールの作成と送信
  3. ファイル添付(PDF、CSV、画像など)
  4. 自動化(スケジュール送信、ループ送信)
  5. エラーハンドリングの実装

2. セキュリティ対策とメールマナーも忘れずに

Pythonでのメール送信が便利になった一方で、情報の扱いには細心の注意が必要です。

セキュリティ面で大切なこと

  • パスワードは .env や環境変数で安全に管理
  • アプリパスワードを使い、通常のログインパスワードは絶対に使わない
  • 不特定多数にメールを送るときは、必ずBCCを使う

メールマナーの基本

  • 件名は明確に
  • 本文は丁寧に、読みやすく
  • 誤送信や宛先ミスに注意

「便利=危険にもなり得る」という意識を持つことで、プロフェッショナルなメール活用ができます。

3. あなたのスキルが、日々の業務をもっとスマートにする

Gmailの送信が自動化できると、次のような作業がすべてPythonで完結します。

  • 請求書やレポートの定期配信
  • エラーメッセージやアラートの自動通知
  • アンケート結果の集計 → 自動メール送信

たった数行のコードで、あなたの業務効率は驚くほど高まります
自分で自分の仕事をラクにできる――それが、プログラミングの最大の魅力です。

最後に:一歩ずつで大丈夫。あなたの「できた」が未来を変える

誰でも最初は初心者です。
エラーでつまずくことも、理解できないことも当然あります。
でも、「メールを送れた!」という一つの成功体験が、次のチャレンジへの原動力になります。

ぜひこの記事を何度でも読み返しながら、あなたの手で“使えるスキル”を身につけていってください

コメント

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