业务场景
客户要求写一个程序能够自动登录他的邮箱,然后读取邮件中的求职者简历,并将该类型的邮件转为pdf以及获取关键信息和附件。
实现方式
1、使用imaplib库访问医院HR邮箱,获取邮件并使用email将邮件信息解析为html信息
2、筛选出简历信息后使用pdfkit将邮件内容转为pdf
3、使用etree读取html并通过find找寻关键信息存
主要逻辑:
1、业务方法resume_collect调用getMail获取邮件list进行解析
2、获取邮件方法getMail使用imaplib登录邮箱获取邮件信息通过解析邮件首部方法parseHeader、解析邮件/信体方法parseBody将邮件元数据转为易解析的html和text信息
3、解析邮件首部方法parseHeader通过email库解析邮件的主题、发件人、收件人等首部信息
4、解析邮件/信体方法parseBody通过email库解析邮件的信体以及附件内容
获取邮件getMail方法
def getMail(self, host, username, password, port=993):
try:
serv = imaplib.IMAP4_SSL(host, port)
except Exception, e:
serv = imaplib.IMAP4(host, port)
serv.login(username, password)
# MAP4 ID extension 通信规则 RFC 2971 协议 上传ID信息
imaplib.Commands['ID'] = ('AUTH')
args = ("name", "XXXX", "contact",