Pythonで「Send to Kindle」を自作する

2022年8月8日

はじめに

Kindleを使っていて、簡単にWordやPDFを送りたい時に役立つのが「Send to Kindle for PC」です。
右クリックで送れるので、とても重宝していました。

前もっていたのがアメリカへ旅行へ行った友達に買ってきてもらった海外版だったんですが、日本で買い換えたら、あれ?使えない。
調べてみると、日本のAmazonは対応していないのですね・・・。

ということで、今回はPythonで自作してみました。

仕組み

日本のKindleも「Send to Kindle」のEメールアドレスはあります。
このメールに添付ファイルを送ると同じことが出来るので、これを利用しようと思います。
今回のプログラムは、Gmailを使って、ドラッグ&ドロップしたファイルを、「Send to Kindle」のEメールアドレスに送るプログラムになります。

この仕様は公式のページを参考に出来ます。

事前準備1ーGmail

GmailをPythonから呼び出すために、アプリパスワードを取得する必要があります。

1.自分のGoogleアカウントを開きます。
2.「セキュリティ」を開きます。
3.「Googleへのログイン」にある、「2段階認証プロセス」をONにします。
4.「アプリ パスワード」から、アプリパスワードを生成してください。

事前準備2ーAmazon

1.「コンテンツと端末の管理」に移動します。

2.「設定」を開き、「パーソナル・ドキュメント設定」を選択します。
3.「Send-to-Kindle Eメールアドレスの設定」に一覧があるので、今回利用したいKindle端末のメールアドレスを確認しておいてください。

プログラム

下記は最低限のコードのみ載せています。必要に応じて改変して使ってください。

“XXXXX@gmail.com":自分のメールアドレス
“YOUR PASSWORD":事前準備1で生成したアプリパスワード
'XXXXX@kindle.com’:事前準備2で確認したEメールアドレス

import smtplib
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
import os
import sys

def gmail_send(attach):

    # Gmailの設定
    sender, app_password = "XXXXX@gmail.com", "YOUR PASSWORD"
    smtp = smtplib.SMTP("smtp.gmail.com",587)

    # メール本文作成
    msg = MIMEMultipart()
    msg['Subject'] = ''
    msg['From'] = sender
    msg['To'] = 'XXXXX@kindle.com'

    for file in attach:
        fname = os.path.basename(file)
        print(fname)
        with open(file, "rb") as f:
            attachment = MIMEApplication(f.read())
        attachment.add_header("Content-Disposition", "attachment", filename=fname)
        msg.attach(attachment)

    # メールサーバ接続
    smtp.ehlo()
    smtp.starttls()
    smtp.login(sender,app_password)
    smtp.send_message(msg)
    smtp.quit()

if __name__ == '__main__':
    gmail_send(sys.argv[1:])
    print('メールが送信されました')

あとは必要に応じて以前紹介したEXE化したら使いやすいですね。

まとめ

いかがでしょうか?Kindleの仕様がシンプルなので、Pythonでも簡単に作れちゃいましたね。
良かったら、改造して使ってみてください。

IT,Python

Posted by スングル