新网Logo
首页>邮箱资讯>

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

登录 注册

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

  • 来源:新网
  • 更新日期:2018-03-13

摘要:kindle想每天看新闻,看博客, 其实自己用python写个代码就能很简单实现了。 1.kindle推送原理 kindle不仅可以买书看书,还可以自己推送内容 原理很简单,往你个人的kindle邮箱发邮件,附件为你要推送的内容即可。 登录亚马逊官网,点击管理我的内容和设备,进入设置,找到 〖发送至Kindle〗电子邮箱, 记这个邮箱为A 然后你需要有个自己的常用邮箱,

kindle想每天看新闻,看博客,

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

t01396e3c5207b66dea.jpg

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.每天爬取博客内容

 

这两个章节在下一个文章讲