この記事でできること
「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を使うためのセキュリティ対策
■ アプリパスワードを発行する手順
- Google アカウントにログインする
👉 Google アカウント セキュリティ設定 - 「2段階認証プロセス」が有効であることを確認
※未設定の方は、ここでオンにしてください。 - ページ下部の「アプリ パスワード」をクリック
- アプリの選択:「メール」
デバイスの選択:「Windows パソコン」など任意の名前 - 「生成」をクリックすると、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段階認証の設定方法
- Google アカウントのセキュリティページにアクセス
- 「2段階認証プロセス」をオンにする
- スマホに届く認証コードで本人確認を完了
アプリパスワードは、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)
- プロジェクト直下に
.env
ファイルを作成
GMAIL_APP_PASSWORD=あなたのアプリパスワード
- Pythonコードで読み込む
from dotenv import load_dotenv
import os
load_dotenv()
password = os.getenv("GMAIL_APP_PASSWORD")
.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日に大量のメールを一斉送信している
回避するためのポイント
- 件名や本文は明確に
- 例:「テスト」ではなく「Pythonでの送信テストです」など具体的に書く
- 差出人情報を明記する
From:
のアドレスと表示名を正しく設定し、Gmailで設定した名前と一致させる
- 画像やリンクの使用は控えめに
- HTMLメールを使う場合も、シンプルにまとめる
- 自分宛てにも送ってみる
- 一度、自分の別アドレスに送信して迷惑メールに入らないか確認する
- Gmailの「メールの送信ガイドライン」に準拠する
トラブル対応も学びの一部。経験があなたの武器になる
エラーに遭遇すると、誰でも不安になります。
でも、その一歩を自分で解決できたときの達成感は、次の挑戦への自信につながります。
今回紹介した対策をもとに、少しずつ「なぜエラーが起きるのか」を考えられるようになると、
あなたのプログラミングは一気にレベルアップします。
まとめ|Gmail送信はPythonでここまで簡単にできる!
PythonでGmailを送る――
一見ハードルが高そうに感じたかもしれませんが、実際に手を動かしてみると「意外とシンプル!」と感じたのではないでしょうか?
本記事では、基本から応用まで、Pythonを使ったGmail送信の方法を一通りご紹介しました。
ここで、今回の内容を振り返りながら、これからの活用のヒントをお届けします。
1. 最初はシンプルに、徐々に機能を追加していこう
- 最初は1通のテキストメールを送るだけで十分です。
- できたら次に、HTML形式のメールや添付ファイルの送信にチャレンジ。
- 焦らず、少しずつステップアップしていくことが成功のコツです。
具体的なステップアップ例:
- テキストメールの送信
- HTMLメールの作成と送信
- ファイル添付(PDF、CSV、画像など)
- 自動化(スケジュール送信、ループ送信)
- エラーハンドリングの実装
2. セキュリティ対策とメールマナーも忘れずに
Pythonでのメール送信が便利になった一方で、情報の扱いには細心の注意が必要です。
セキュリティ面で大切なこと
- パスワードは
.env
や環境変数で安全に管理 - アプリパスワードを使い、通常のログインパスワードは絶対に使わない
- 不特定多数にメールを送るときは、必ずBCCを使う
メールマナーの基本
- 件名は明確に
- 本文は丁寧に、読みやすく
- 誤送信や宛先ミスに注意
「便利=危険にもなり得る」という意識を持つことで、プロフェッショナルなメール活用ができます。
3. あなたのスキルが、日々の業務をもっとスマートにする
Gmailの送信が自動化できると、次のような作業がすべてPythonで完結します。
- 請求書やレポートの定期配信
- エラーメッセージやアラートの自動通知
- アンケート結果の集計 → 自動メール送信
たった数行のコードで、あなたの業務効率は驚くほど高まります。
自分で自分の仕事をラクにできる――それが、プログラミングの最大の魅力です。
最後に:一歩ずつで大丈夫。あなたの「できた」が未来を変える
誰でも最初は初心者です。
エラーでつまずくことも、理解できないことも当然あります。
でも、「メールを送れた!」という一つの成功体験が、次のチャレンジへの原動力になります。
ぜひこの記事を何度でも読み返しながら、あなたの手で“使えるスキル”を身につけていってください。
コメント