您的位置:首页 > 编程语言 > Python开发

python实现kindle每天推送博客1----kindle推送原理,python实现qq邮箱登录及邮件发送

2017-08-03 17:42 671 查看
kindle想每天看新闻,看博客,

其实自己用python写个代码就能很简单实现了。

1.kindle推送原理

kindle不仅可以买书看书,还可以自己推送内容


原理很简单,往你个人的kindle邮箱发邮件,附件为你要推送的内容即可。

登录亚马逊官网,点击管理我的内容和设备,进入设置,找到


〖发送至Kindle〗电子邮箱,

记这个邮箱为A
然后你需要有个自己的常用邮箱,我是qq邮箱,记这个邮箱为B
把B添加到


已认可的发件人电子邮箱列表

至此已完成设置。

注意kindle推送的规则:
Kindle个人文档服务目前只能转换并发送以下类型的文档:
Microsoft Word (.doc, .docx) 
RTF文件(.rtf) 
HTML(.htm, .html)
TXT文件(.txt) 
Zip, x-zip压缩文件
Mobi格式电子书 

JPEG (.jpg), GIF (.gif), Bitmap (.bmp) 和 PNG (.png) 格式的图片。
Adobe PDF (.pdf)文档可维持原文件格式,发送至您的Kindle。

Adobe PDF (.pdf)文档可转换为Kindle格式发送,目前处于试用阶段。

2.qq邮箱登录

这里需要用到python的email模块

网上有很多例子,我也上下我的例子

#!/usr/bin/env python
#coding=utf-8
#
#   Copyright 2017 liuxinxing
#

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import smtplib
import os
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import zipfile
import time

file_dir=os.path.dirname(os.path.realpath(__file__))

class sendmail():
def __init__(self):
self.msg = MIMEMultipart()
self.to_email ='aaaaa@kindle.cn'
self.from_email ='bbbbbb@qq.com'
self.email_subject = 'kindle 推送邮件'
self.smtpServer ='smtp.qq.com'
self.sslPort = 465

# 加邮件头
def gen_msghead(self):
self.msg['to'] = self.to_email
self.msg['from'] = self.from_email
self.msg['subject'] = self.email_subject

# 添加附件,可多次添加
def add_attachment(self, dir):
att1 = MIMEText(open(dir, 'rb').read(), 'base64', 'gb2312')
att1["Content-Type"] = 'application/octet-stream'
att1["Content-Disposition"] = 'attachment; filename=%s'%os.path.basename(dir)
self.msg.attach(att1)

#发送邮件
def send(self):
try:
server = smtplib.SMTP_SSL(self.smtpServer, self.sslPort)
server.login('bbbbbbb','sssssss')#XXX为用户名,XXXXX为密码
server.sendmail(self.msg['from'], self.msg['to'],self.msg.as_string())
server.quit()
print '发送成功'
except Exception, e:
print str(e)

if __name__=="__main__":
a=sendmail()
a.gen_msghead()
# a.add_attachment(file_dir+"/data/")
a.send()

代码里to email就是A,from email就是B

网上很多都是直接账号密码登录,但是实际很多邮箱为了安全,smtp登录都要用授权码,qq邮箱也不例外

可以自己到qq邮箱去设置,获得授权码后登录。

网上很多例子的登录都不是ssl的,qq邮箱是登录不了的,要通过ssl端口登录才不会有问题。

问题及解决:

经常会遇到

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-78: ordinal not in range(128)


报错,原因是编码问题,解决方法是

import sys
sys.setdefaultencoding('utf-8')

但是直接这样用又会报错

AttributeError: 'module' object has no attribute 'setdefaultencoding'


需要先reload

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

这里比较奇怪

3.kindle推送邮件

4.每天爬取博客内容

这两个章节在下一个文章讲
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息