QQ泡沫乐园 · 免费提供游戏辅助,破解软件,活动资讯,喜欢记得收藏哦!
综合软件_线报活动_游戏辅助_最新电影_最优质的的辅助分享平台

写过fromemail40份简历下载打印40个简历

泡沫乐园 2022-05-06 13:05

背景:最近忙于公司招聘相关的技术方面。前几天有个工作要下载打印公司邮箱里的简历。这个看似很简单,其实也很简单邮件附件过大如何处理,但是上手之后,花了大半个中午的时间,下载打印了不到40份简历。

原因,

首先,邮箱不提供批量下载附件的功能(有批量下载部分附件的功能,但是首先文件会比较分散,但是还是需要点击多次),可以只打开一封邮件,进去找到附件,然后点击下载附件,而且浏览器下载附件的速度也很疯狂,时快时慢。

其次,申请者可能比较着急,没有仔细阅读招聘公告,导致提交的材料没有按照规范打包成压缩文件,下载会增加工作量。

解决方案:理论上,重复劳动可以通过计算机解决。实事求是地说,未来会有大量的简历可供下载和打印。到写这篇文章的时候,已经有133份了,以后还会有更多。错误,容易错过。个人来说,快速写一个小程序也是一种热身。

选项 1:爬虫。因为下载过程是登录邮箱,点击邮件,然后点击附件下载邮件附件过大如何处理,和爬虫的思路差不多。笔者之前写过很多爬虫博客,这里不再赘述。思路都是一样的,具体问题分析一下。但是这次我没有选择爬虫,因为和第二种方案相比有点麻烦。

方案二:使用python的poplib包和Email包直接下载。废话不多说,直接上源码

导入poplib

从 email.parser 导入解析器

从 email.header 导入 decode_header

从 email.utils 导入解析地址

导入操作系统

M= poplib.POP3("pop.163.com")

M.user('*****')

M.pass_('*****')

#print (len(M.list()[1]))

#print(M.list()[1])

#msg_id="qqqqq"

#outf = open('%s.rar' % msg_id, 'w')

#outf.write(M.retr(1))

#print (M.retr(1))

p>

'''

对于 M.list()[1] 中的 msg_id:

#print (msg_id)

outf = open('%s.rar' % msg_id, 'w')

outf.write('\n'.join(M.retr(msg_id)[1]))

outf .close()

'''

def decode_str(s):#字符编码转换

值,字符集 = decode_header(s)[0]

如果字符集:

value = value.decode(charset)

返回值

def get_att(msg,id):

p>

导入电子邮件

附件文件 = []

os.mkdir(id)

对于 msg.walk() 的一部分:

file_name = part.get_filename()#获取附件名称类型

contType = part.get _content_type()

如果文件名:

h = email.header.Header(file_name)

dh = email.header.decode_header(h)#要解码的附件名称

文件名 = dh[0][0]

如果 dh[0][1]:

filename = decode_str(str(filename, dh[0][1]))#使附件名称可读

打印(文件名)

#filename = filename.encode("utf-8")

data = part.get_payload(decode=True)#下载附件

path=id+"/"+文件名

att_file = open(path, 'wb')#在指定目录下创建文件,注意二进制文件需要wb模式打开

attachment_files.append(文件名)

att_file.write(data)#保存附件

att_file.close()

返回附件文件

dd=len(M.list()[1])

对于范围内的 i(dd,0 ,-1):

resp,行,八位字节 = M.retr(i)

msg_content = b'\r\n'.join(lines).decode('utf-8')

#解析邮件:

msg = Parser().parsestr(msg_content)

f_list = get_att(msg,str(i))#获取附件

获得的结果

一个文件夹一份简历

文件夹中的普通简历

文件夹中的简历不规则

几个需要注意的问题

1 M.pass_('*****'),不是邮箱密码,而是弹出的验证码

2是文件夹的形式,一来是便于管理,二来如果直接写到文件夹里,同名的简历会被覆盖(由于命名规则),原因损失

3为了打印工作的效率,写到一个文件夹可能效率更高(加id可以解决重名问题)

4 使用程序 批量打印是不现实的,因为不需要将简历中的所有文件都打印出来。由于命名不规范,需要手动确定打印哪个文件。所以,打印还是要一张一张的!

总结

不到半天就写了个小程序还不错,现在学着卖了,写一篇文章。不过,雕刻昆虫的招数,实在是一文不值!我更看重的是解决问题的思路清晰,对问题的深思熟虑,以及解决方案的高效执行。