こんにちは、こんです🦊
「VPSでアプリ作ったけど、何かエラーがあったら誰が気づくんだろう…?」
そんな風に思ったこと、ありませんか?
Botが止まったり、ログにエラーが出たり。
Slack通知だけじゃ心もとないときに、古くて最強の通知手段が “メール” です。
でもいざPythonで smtplib を書いてみると、
「あれ?届かない?」問題に必ずハマるのがこの世界の伝統芸。
今回は、
✅ smtplib で届かない体験をあえてしてみる
✅ そして SendGrid に切り替えて「届く!」を実感する
✅ VPSで小さな監視メールやお問い合わせ通知を自分で作れる
ここまでを作っていきます🦊
「VPS×メール」は地味だけど、
小さいチーム開発でも一人の開発でも、通知があるだけで安心感がケタ違いです。
送れない地獄から抜けて「届く」を作ってみます🦊✨
1. 導入:この記事でできるようになること
今回は「VPSからメール通知を送る」超基本の方法をやってみます。
✅ Pythonの smtplib を動かしてみる
✅ VPSでメールが届かない“あるある”を体験して学ぶ
✅ SendGrid を使って「ちゃんと届く方法」に切り替える
💡 そもそも、なぜメール送信がいるの?
アプリのエラー通知を自分に送れると心強い
お問い合わせフォームの送信結果を自分宛にメールで受け取れる
Slack通知と合わせて、最後の保険にできる
「VPS上で動くアプリやBotが誰にも言わずに止まっていた…」
という悲劇を防ぐのに、メール通知は超役立ちます!
2. 背景・基礎知識
🔹 Pythonでメール送るってどうやるの?
Pythonには smtplib という標準ライブラリがあります。
これを使うと、GmailなどのSMTPサーバーにアクセスしてメールを送るコードが書けます。
🔹 なんで最初に smtplib を試すの?
追加ライブラリ不要ですぐ動く
「Python メール送信」で検索するとほぼ smtplib の例が出てくる
なので「これで十分だろう」と思って試してみましたが…。
🔹 でも届かない問題
実際にVPS上で smtplib から Gmail に接続して送ってみると、
Gmail側が「怪しい送信者」と判断してブロックするのがほとんどです。
VPSのIPが逆引きできない
認証(SPF/DKIM)が整っていない
Gmailは「パスワードだけで送信」を廃止している
これで「届かない or スパム扱い」が鉄板の落とし穴。
3. 実践パート
✅ ステップ1|ダメ元で smtplib を体験する
まずは動作確認としてローカル or VPSで試すのは大事。
import smtplib
from email.mime.text import MIMEText
# Gmailアカウント情報
gmail_user = "あなたのメール@gmail.com"
gmail_pass = "アプリパスワード"
# メール本文
msg = MIMEText("テスト送信です")
msg["Subject"] = "テストメール"
msg["From"] = gmail_user
msg["To"] = "送りたい相手のメールアドレス"
# SMTPサーバーに接続
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as server:
server.login(gmail_user, gmail_pass)
server.send_message(msg)
✅ この時点で多くの人は
「ローカルでは送れる → VPSで送ると届かない or スパム行き」
を体験します。
✅ ステップ2|SendGridに切り替える理由
だからこそ、個人でSMTP設定を整えるより
SendGridのような配信サービスを中継するのが一番安全です。
🔹 SendGridとは?
SendGrid(センドグリッド) は、
世界中で使われている「メール配信専門のクラウドサービス」です。
いわゆる SMTPサーバー や API送信 を代行してくれるので、
あなた自身が複雑なメールサーバーの設定をしなくても、
認証済みの安心な仕組みでメールを送れる のが特徴です。
「VPSからメールを送りたいけど、自分でメールサーバー建てるのはハードル高い…」
「GmailやOutlookに直送するとスパム扱いされて届かない…」
こういう人のために、送信基盤をまるっと貸してくれるのがSendGridです!
🔹 無料で使えるの?
はい!
SendGridには 無料プラン(Free Tier) があります✨
✅ 1日あたり100通まで送信可能
✅ クレジットカード登録はいるけど、従量課金は発生しない
✅ APIキーを発行してすぐ試せる
なので、
個人の小規模なVPS通知・テスト開発・フォーム送信には十分!
💡 ただし:
無料枠を超えると課金が発生するので、商用で大量送信する場合は有料プランにアップグレードする必要があります。
🔹 結局どう便利?
VPS → SendGrid経由 → 相手の受信箱 に届く
SPF/DKIMなどの送信認証を自前で組まなくてOK
Pythonの公式ライブラリがあり、すぐコードに組み込める
なので、
「自分でSMTPサーバーを全部管理するのはしんどい」という人の99%はSendGridを使えばOK!
というくらい定番の仕組みです✨
✅ ステップ3|SendGridでちゃんと届く形にする
import os
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail
def send_via_sendgrid(to_email, subject, content):
message = Mail(
from_email="yourname@example.com",
to_emails=to_email,
subject=subject,
html_content=content
)
sg = SendGridAPIClient(os.environ["SENDGRID_API_KEY"])
response = sg.send(message)
print(response.status_code)
# 送信テスト
send_via_sendgrid(
"送りたい相手のメールアドレス",
"SendGridテスト",
"<p>ちゃんと届く!</p>"
)
.env に必ず
SENDGRID_API_KEY=xxxx
を入れておきましょう!
4. つまずきポイントと対処法(FAQ)

5. まとめと次回予告
今回は、
✅ smtplib で「届かない体験」をしてから
✅ SendGridなど外部サービスで届く形にシフト
という「ハマりがちな落とし穴と解決策」を整理しました!
次は、送信通知をWebhookやSlack連携と組み合わせる 実践を予定しています🦊
#VPS #Python #sendgrid #smtplib