You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过imaplib4访问无密码共享邮箱并下载未读邮件附件

无密码共享Outlook邮箱附件下载解决方案

首先明确:所谓的“无密码共享邮箱”并非真的不需要认证,而是本身没有独立的账号密码体系,依赖已经获得访问授权的个人账号完成身份校验。你可以选择以下两种Python实现方案:

方案1:沿用现有IMAP逻辑(修改登录参数即可)

Outlook的IMAP服务支持通过授权个人账号登录共享邮箱,仅需要调整登录时的用户名格式即可:

  • 用户名填写格式:{已授权的个人邮箱地址}\{共享邮箱地址},比如你个人账号是xxx@domain.com,共享邮箱是abc@domain.com,那用户名字段填xxx@domain.com\abc@domain.com
  • 密码字段填写你个人邮箱的登录密码,若个人账号开启了二次验证,需要到微软账号后台生成应用专用密码填入

修改后的可用代码如下:

from imap_tools import MailBox, AND

files = []
# 注意修改以下占位参数为你的实际信息
PERSONAL_EMAIL = "你的个人邮箱地址"
SHARED_EMAIL = "共享邮箱地址"
PERSONAL_PWD = "你的个人邮箱密码/应用专用密码"
SAVE_DIR = "./附件保存目录" # 需提前创建好该目录

with MailBox('imap.outlook.com').login(f"{PERSONAL_EMAIL}\{SHARED_EMAIL}", PERSONAL_PWD) as mailbox:
    for msg in mailbox.fetch(AND(seen=False)):
        for att in msg.attachments:
            print(att.filename, att.content_type)
            files.append(att.filename)
            # 注意要以二进制写模式打开文件,否则附件会损坏
            save_path = f"{SAVE_DIR}/{att.filename}"
            with open(save_path, 'wb') as f:
                f.write(att.payload)

方案2:使用Microsoft Graph API(更适合企业合规场景)

如果企业禁用了IMAP协议,可以选择微软官方的Graph API实现,采用OAuth2身份认证,不需要明文传递密码:

  • 先在Azure后台注册应用,开通Mail.Read等对应权限,由管理员同意授权
  • 使用msgraph-core等SDK完成认证后,调用共享邮箱的邮件查询接口直接拉取未读邮件和附件,示例逻辑如下:
import base64
from msgraph.core import GraphClient

# 用应用客户端ID、租户ID、客户端密钥完成认证
client = GraphClient(credential=(tenant_id, client_id, client_secret))
# 查询共享邮箱的未读邮件,附带附件信息
response = client.get(f"/users/{SHARED_EMAIL}/messages", 
    params={"$filter": "isRead eq false", "$expand": "attachments"})

for msg in response.json()["value"]:
    for att in msg["attachments"]:
        if att["@odata.type"] == "#microsoft.graph.fileAttachment":
            save_path = f"{SAVE_DIR}/{att['name']}"
            with open(save_path, "wb") as f:
                f.write(base64.b64decode(att["contentBytes"]))

内容的提问来源于stack exchange,提问作者Annabelle79

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:36:08