【Python】自动化办公 篇六——python自动接收邮件

发布时间:2024-11-23 05:15

学习基础的Python编程,可以自动化处理文件和任务,提高效率。 #生活知识# #生活经验# #软件#

最新推荐文章于 2024-07-07 12:52:38 发布

哟米 2000 于 2020-08-10 14:29:01 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

获取电子邮件是个轻松简单的步骤,但获取到的是邮件原始内容,其内容格式通常遵守MIME协议(多用途互联网邮件扩展

一封邮件通常会分为邮件头与邮件体,邮件头中存在着这份邮件的基本信息,而邮件体则是邮件的具体内容

import poplib

from email.parser import Parser

from email.header import decode_header

#连接邮箱服务器

def connect_email():

user = 'xxx' #邮箱地址

password = 'xxx' #开启服务密码,上一篇博客介绍过

pop3_server = 'pop.126.com'

#开始连接到服务器

server = poplib.POP3(pop3_server)

#打开或关闭调试信息

server.set_debuglevel(1)

#打印POP3服务器的欢迎文字

print(server.getwelcome().decode('utf-8'))

#开始进行身份验证

server.user(user=user)

server.pass_(password)

return server

#获取邮件内容

def get_email_content(server):

email_num, email_size = server.stat()

rsp, msglines, msgsize = server.retr(email_num)

msg_content = b'\r\n'.join(msglines).decode('gbk')

msg = Parser().parsestr(msg_content)

server.close()

return msg

#邮件头解析

def parser_subject(msg):

subject = msg['Subject']

value, charset = decode_header(subject)[0]

if charset:

value = value.decode(charset)

return value

def guess_charset(msg):

charset = msg.get_charset()

if not charset:

content_type = msg.get('Content-Type', '').lower()

pos = content_type.find('charset=')

if pos >= 0:

charset = content_type[pos + 8: ].strip()

return charset

#邮件体解析

def parser_content(msg, indent=0):

if msg.is_multipart():

parts = msg.get_payload()

for n, part in enumerate(parts):

print(f"{' ' * indent * 4} 第{n+1}部分")

print(f"{' ' * indent * 4} {'-'*50}")

parser_content(part, indent+1)

else:

content_type = msg.get_content_type()

if content_type == 'text/plain' or content_type == 'text/html':

content = msg.get_payload(decode=True)

charset = guess_charset(msg)

if charset:

content = content.decode(charset)

print(f"{' ' * indent * 4} 邮件内容:{content}")

else:

print(f"{' ' * indent * 4} 附件内容:{content_type}")

def main():

server = connect_email()

msg = get_email_content(server)

subject = parser_subject(msg)

print(subject)

parser_content(msg)

if __name__ == '__main__':

main()

 运行结果是这样的:因为这个邮件没有包含多层嵌套,因此没有打印出第{n+1部分}。

网址:【Python】自动化办公 篇六——python自动接收邮件 https://www.yuejiaxmz.com/news/view/204490

相关内容

python自动化办公1
Python办公自动化:解锁高效工作流程,掌握文档处理的艺术
Python报表自动化
Python自动化办公学习路线:提升工作效率,释放副业可能,让生活更美好!
10个Python自动化脚本,让日常任务轻松便捷!
高效Python工作流自动化:简化开发流程的最佳实践
5 个自动化生活的 Python 项目:从初学者到高级
解决日常问题的 10 个 Python 自动化脚本
十个Python脚本,轻松实现日常任务自动化
分享10个Python脚本,轻松让日常任务自动化

随便看看