今回掘るテーマ ⛏️
ある日、サーバールームの扉の前でモグラ先生が 「おや? Send to Kindle が動かないぞ!」 と首をかしげていました。どうやら日本アカウントだと公式 Windows アプリがインストールできないケースがあるらしいのです 🪹。そこで今回は――
モグラ先生: 「それなら穴を掘って仕組みを丸ごと作っちゃおう! ほら、“掘って見つけた!” ってやつだよ」
メール送信だけで Kindle にファイルを届けるパーソナルドキュメントサービスを Python で手軽に呼び出すツールを作ります。最新仕様をチェックしつつ、安全&便利に運用していきましょう!
どうして自作が必要? 🧐
- 公式アプリが日本ストアにない/動かないことがある
2024 年末、Amazon は Windows/Mac 用の新しい “Send to Kindle” アプリ を公開しましたが、日本リージョンのアカウントではダウンロードページが表示されない場合があります。 (Send to Kindle – Windows App – Amazon.com) - メール送信は今も有効
Kindle には端末ごとの Send-to-Kindle E メールアドレス が割り当てられており、ここにファイルを添付して送るだけでクラウドへアップロードできます。 (Send to Kindle – Email – Amazon.com) - 2025 年 4 月からの新ルール
セキュリティ強化のため、ドメイン単位(@example.com)の承認は廃止。完全一致アドレスのみ許可されるようになりました。 (Amazon is adding a new Send to Kindle restriction – Reddit)
モグラ先生: 「公式が穴をふさぐなら、ぼくらは別のトンネルを掘ればいいさ!」
仕組みをざっくり図解 🗺️
- Gmail で添付ファイル付きメールを送信
- Amazon の Personal Document Service が受信
- Kindle ライブラリへ自動登録 → 端末/アプリに配信
小さな穴掘りポイント
モグラ先生: 「一度に送れるのは 25 個・合計 50 MB までだよ。超えると穴が詰まるから注意! 🐾」 (Learn How to Use Your Send to Kindle Email Address – Amazon.com, Troubleshoot Send to Kindle Errors – Amazon Customer Service)
最新仕様チェック(2025 年 4 月版)📜
項目 | 内容 |
---|---|
対応拡張子 | EPUB / PDF / DOCX / RTF / TXT など (Learn About Sending Documents to Your Kindle Library – Amazon.com) |
添付上限 | 25 ファイル・50 MB/1通(ZIP 可) (Learn How to Use Your Send to Kindle Email Address – Amazon.com) |
送信元 | 承認済みアドレス最大 15 件 (Learn How to Use Your Send to Kindle Email Address – Amazon.com) |
セキュリティ変更 | 2025-04-01 以降、完全一致アドレスのみ許可 (Amazon is adding a new Send to Kindle restriction – Reddit) |
モグラ先生: 「送信前に Gmail アドレスを “承認済みリスト” に入れるのを忘れずに!」
事前準備 ⛏️
1️⃣ Gmail 側
- Google アカウントで 2 段階認証 を有効化。
- アプリパスワード を生成(16 桁のコード)。 (Sign in with app passwords – Gmail Help)
モグラ先生: 「最近 “アプリパスワード” のメニューが隠れがちだけど、直接リンクなら出てくるよ。出てこない場合は Gmail API + OAuth2 を検討しよう」 (App Password not listed as an available option – Gmail Community)
2️⃣ Amazon 側
- 「コンテンツと端末の管理」→ 設定 → パーソナルドキュメント設定 を開く。 (Learn How to Use Your Send to Kindle Email Address – Amazon.com)
- Send-to-Kindle E メールアドレス(端末ごとに一意)をメモ。 (How to Find Your Kindle Email Address)
- 承認済み E メールアドレスリストに Gmail を追加。 (Add an Email Address to Receive Documents in Your Kindle Library)
コードを書いてみよう 💻
以下は最小構成のサンプルです。環境変数や .env
で情報を隠すと安全度アップ!
import os
import sys
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
GMAIL_USER = os.getenv("GMAIL_USER") # 例: "[email protected]"
GMAIL_APP_PASS = os.getenv("GMAIL_APP_PASS") # 16桁アプリパス
KINDLE_ADDR = os.getenv("KINDLE_ADDR") # 例: "[email protected]"
def send_to_kindle(files):
msg = MIMEMultipart()
msg["From"] = GMAIL_USER
msg["To"] = KINDLE_ADDR
msg["Subject"] = "" # 件名は空でOK
for f in files:
with open(f, "rb") as fp:
part = MIMEApplication(fp.read(), Name=os.path.basename(f))
part.add_header("Content-Disposition", "attachment", filename=os.path.basename(f))
msg.attach(part)
with smtplib.SMTP("smtp.gmail.com", 587) as smtp:
smtp.starttls()
smtp.login(GMAIL_USER, GMAIL_APP_PASS)
smtp.send_message(msg)
if __name__ == "__main__":
if len(sys.argv) < 2:
print("ドラッグ&ドロップでファイルを渡してね!")
else:
send_to_kindle(sys.argv[1:])
print("📚 メールを送信しました。到着を待とう!")
小さな穴掘りポイント
モグラ先生: 「VPN
やSMTP
ブロックのあるネットワークだと接続失敗するよ。ポート 587 が開いているか確認しよう!」
EXE 化して配布するなら? 🚀
- PyInstaller で1ファイル化 → 気軽に配布 (Send to Kindle – Microsoft Support)
- さらに最適化したいなら Nuitka でバイナリ化して高速起動もアリ!
モグラ先生: 「EXE にするときは
.env
を同梱せず、環境変数で注入するのが安全だよ!」
まとめ 🎉
- Kindle へのファイル配送は メール送信 だけで完結!
- 2025 年の新セキュリティ要件(完全一致アドレス)に注意。
- Python + Gmail なら 30 行ほどでツールが完成。
- EXE 化すればエンドユーザーもワンクリックで “掘って見つけた!” 体験。
モグラ先生: 「さぁ、今日も楽しく穴を掘って、技術の宝を見つけに行こう! ⛏️🐾」
“`