没有合适的资源?快使用搜索试试~ 我知道了~
Python自动发送和收取邮件的方法
3 下载量 67 浏览量
2020-12-17
08:58:19
上传
评论
收藏 67KB PDF 举报
温馨提示
试读
3页
作为课代表,经常要做的两件事是:帮忙发作业和帮忙收作业,而且很多时候是通过邮件来完成的,如果手动一封一封的收取和发送就很浪费时间——人生苦短,我用Python。 直接上代码,不想了解细节原理直接拉到最后,我封装成了两个函数,根据提示,输入参数,直接调用就行。亲测可行 不想看细节这部分可以直接跳过,但是运行的时候要把这一块也粘贴进去。 导入相关库 import smtplib,ssl from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email.mime.text
资源详情
资源评论
资源推荐
Python自动发送和收取邮件的方法自动发送和收取邮件的方法
作为课代表,经常要做的两件事是:帮忙发作业和帮忙收作业,而且很多时候是通过邮件来完成的,如果手动一封一封的收取
和发送就很浪费时间——人生苦短,我用Python。
直接上代码,不想了解细节原理直接拉到最后,我封装成了两个函数,根据提示,输入参数,直接调用就行。亲测可行
不想看细节这部分可以直接跳过,但是运行的时候要把这一块也粘贴进去。
导入相关库
import smtplib,ssl
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.utils import formatdate
from email import encoders
import poplib
from email.parser import Parser
from email.header import decode_header
from email.utils import parseaddr
from email.header import Header
#解析消息头中的字符串,没有这个函数,print出来的会使乱码的头部信息。如'=?gb18030?B?yrXWpL3hufsueGxz?='这种,通
过decode,将其变为中文
def decode_str(s):
value, charset = decode_header(s)[0] if charset:
value = value.decode(charset)
return value
#解码邮件信息分为两个步骤,第一个是取出头部信息:首先取头部信息,主要取出['From','To','Subject'] def get_header(msg):
for header in ['From', 'To', 'Subject']:
value = msg.get(header, '')
if value:
if header == 'Subject': #文章的标题有专门的处理方法
value = decode_str(value)
elif header in ['From','To']:
hdr, addr = parseaddr(value) #地址也有专门的处理方法
name = decode_str(addr)
value=name
print(header + ':' + value)
#头部信息已取出,获取邮件的字符编码,首先在message中寻找编码,如果没有,就在header的Content-Type中寻找
def guess_charset(msg):
charset = msg.get_charset()
if charset is None:
content_type = msg.get('Content-Type', '').lower()
pos = content_type.find('charset=')
if pos >= 0:
charset = content_type[pos+8:].strip()
return charset
#邮件正文部分:取附件,邮件的正文部分在生成器中,msg.walk(),如果存在附件,则可以通过.get_filename()的方式获取
文件名称
def get_file(path, msg):
for part in msg.walk():
filename=part.get_filename()
if filename!=None: #如果存在附件
filename = decode_str(filename) #获取的文件是乱码名称,通过一开始定义的函数解码
data = part.get_payload(decode = True) #取出文件正文内容
f = open(path+filename, 'wb') #此处可以自己定义文件保存位置
f.write(data)
f.close()
print('附件',filename,'下载成功')
def get_content(msg):
for part in msg.walk():
content_type = part.get_content_type()
charset = guess_charset(part)
if part.get_filename()!=None: #如果有附件,则直接跳过
continue
email_content_type = ''
content = ''
if content_type == 'text/plain':
weixin_38569219
- 粉丝: 4
- 资源: 984
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0