鸣鸣惊人 发表于 2019-12-11 16:25

[Python]推送文档到kindle

有kindle的同学,肯能大部分使用过亚马逊的推送服务,就是发一封带附件的邮件到你的亚马逊邮箱,然后附件就会通过wifi推送到你的kindle上。
因为懒得用USB,或者kindle给别人看了,加一本书进去,所以就用python写了一个小程序,就是选择电脑上的文档,云推送到kindle上。
首先你要有个带SMTP服务的邮箱,比如QQ邮箱,然后更改邮箱及密码,还要修改收件的亚马逊邮箱。
以下是代码:
# -*- coding: utf-8 -*-
"""
Created on Thu Dec5 16:45:42 2019

@author: Martin
"""

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

import tkinter.filedialog
from tkinter import *
import tkinter.messagebox

def send():
    msg = email.mime.multipart.MIMEMultipart()
    msgFrom = 'xxxxxxx@163.com' #SMTP的邮箱
    msgTo = 'xxxxx@kindle.cn' #亚马逊的邮箱
    smtpSever='smtp.163.com'#SMTP的服务器
    smtpPort = '25'#端口号
    sqm='xxxxxxxx' #邮箱密码
   
    msg['from'] = msgFrom
    msg['to'] = msgTo
    msg['subject'] = 'Martin'
   
    content = '''
    Dear Martin,
      
      Please check this book.
      
    Auto send program
    '''
    txt = email.mime.text.MIMEText(content)
    msg.attach(txt)
   
    #附件
    #path=file_path
    #file_name=path+name+'.xlsx'
    att = MIMEText(open(file_path, 'rb').read(), 'base64', 'gb2312')
    att["Content-Type"] = 'application/octet-stream'
    att["Content-Disposition"] = 'attachment; filename='+file_path
    msg.attach(att)
    #
    smtp = smtplib
    smtp = smtplib.SMTP()
   
    smtp.connect(smtpSever, smtpPort)
    smtp.login(msgFrom, sqm)
    smtp.sendmail(msgFrom, msgTo, str(msg))
   
def callback1():
    global file_path
    file_path = tkinter.filedialog.askopenfilename(initialdir ="C:/Users/Martin/Downloads",filetypes=( ("亚马逊电子书格式", "*.mobi*"),("Excel 97-2003 工作簿", "*.xls")))
    t.insert('insert',file_path)
def t_k():
    root = Tk()
    root.title('发送文件至 Paper White 3')
    tkinter.Label(root, text='发送文件至kindle',bg='Gainsboro', font=('微软雅黑', 15,'bold'), width=400, height=2).pack()
    tkinter.Label(root,
      text="软件使用说明:1,先选择文件,2,然后点击发送。\n --by Martin",
      bg='Gainsboro', font=('微软雅黑', 11), width=400, height=3).pack()
    fm=Frame(root)
    Button(fm, text="选择文件", font = ('微软雅黑',10),fg="DodgerBlue",bd=2,width=20,command=callback1, relief=GROOVE).pack(side=LEFT, anchor=W, fill=X, expand=YES)
    fm.pack(side=TOP)
    global t
    t = Text(root,height=1,font =('微软雅黑', 10), fg="Black",bg='White')
    t.pack()
   
    Button(fm, text="发送", font = ('微软雅黑',10), fg="DarkRed",bd=2,width=20,command=send, relief=GROOVE).pack(side=LEFT, anchor=W, fill=X, expand=YES)

    sw = root.winfo_screenwidth()#得到屏幕宽度
    sh = root.winfo_screenheight()#得到屏幕高度
    ww = 700
    wh = 350#窗口宽高为100
    x = (sw-ww) / 2
    y = (sh-wh) / 2
    root.geometry("%dx%d+%d+%d" %(ww,wh,x,y)) #窗口居中
   
    root.mainloop()
if __name__=='__main__':
    t_k()

里面已经写了注释,直接改就行。

所以呢 发表于 2019-12-16 14:39

这个正需要,感谢,研究一下

鸣鸣惊人 发表于 2019-12-17 08:48

所以呢 发表于 2019-12-16 14:39
这个正需要,感谢,研究一下

介绍写的不够详细,大概需要一点点基础才可以直接上手试试。有问题留言

FFM 发表于 2019-12-23 16:56

大佬细,还写了GUI。顺便问下可否推荐下买书的站或公众号,以前好多都倒了。

鲁包子 发表于 2019-12-24 01:13

用的是 Python 2?,另外编码不是有更好的写法吗:
#coding=utf-8

fx7788 发表于 2020-1-3 09:07

学习了。感谢,正需要

鸣鸣惊人 发表于 2020-1-9 14:03

鲁包子 发表于 2019-12-24 01:13
用的是 Python 2?,另外编码不是有更好的写法吗:
#coding=utf-8

开头是spyder默认写的,我只写了内容

鸣鸣惊人 发表于 2020-1-9 14:04

FFM 发表于 2019-12-23 16:56
大佬细,还写了GUI。顺便问下可否推荐下买书的站或公众号,以前好多都倒了。

目前我也不知道,也没有刻意去找公众号什么的。只可惜了从前那些好用的公众号啊

鲁包子 发表于 2020-1-9 16:23

鸣鸣惊人 发表于 2020-1-9 14:03
开头是spyder默认写的,我只写了内容

嗯嗯,好的
页: [1]
查看完整版本: [Python]推送文档到kindle