Python可以实现按附件前缀检索下载邮箱的附件吗

参照大神们的代码写了个读取Gmail邮箱并下载所有附件的脚本,想请问一下是否有办法根据邮件标题的前缀或者附件名称的前缀来决定是否下载此附件?

def get_email_content(message, savepath):
    attachments = []
    for part in message.walk():
        filename = part.get_filename()
        if filename:
            filename = decode_str(filename)
            data = part.get_payload(decode=True)
            abs_filename = os.path.join(savepath, filename)
            attach = open(abs_filename, 'wb')
            attachments.append(filename)
            attach.write(data)
            attach.close()
    return attachments

我们发送邮件,经过应用层–>> 传输层–>> 网络层–>>数据链路层–>>物理层。我们发送附件,也可以按照发送纯文本的模式来做,只不过需要加上一些特殊的标记。
# 首先是xlsx类型的附件xlsxpart = MIMEApplication(open('test.xlsx', 'rb').read())xlsxpart.add_header('Content-Disposition', 'attachment', filename='test.xlsx')msg.attach(xlsxpart)
# jpg类型的附件jpgpart = MIMEApplication(open('beauty.jpg', 'rb').read())jpgpart.add_header('Content-Disposition', 'attachment', filename='beauty.jpg')msg.attach(jpgpart)
# mp3类型的附件mp3part = MIMEApplication(open('kenny.mp3', 'rb').read())mp3part.add_header('Content-Disposition', 'attachment', filename='benny.mp3')msg.attach(mp3part)

这三小段的代码,无非就是使用MIMEApplication进行包装,然后设置一下内容。最后添加到邮件内容搞定。

  1. 按邮件标题前缀 先获取邮件标题,再判断标题的前缀是否与预期一致,如果一致,则下载附件;如果不一致,则忽略。
  2. 按文件名前缀 楼主已经能下载所有文件了,已经获取到所有的文件名了。判断文件名的前缀是否与预期一致,如果一致,则下载;如果不一致则忽略。 filename = decode_str(filename)后加if判断即可。