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

如何使用Python以编程方式访问iCloud Mail并获取邮件?

访问iCloud Mail的Python实现方案

iCloud Mail确实没有官方API,目前有两种可行的编程方式来获取邮件,其中IMAP协议是首选方案:

1. 基于IMAP协议(推荐)

iCloud Mail支持标准IMAP协议,这是合规且稳定的方式,步骤如下:

  • 登录iCloud账户设置,找到邮件选项,开启IMAP服务;
  • 生成App专用密码:由于iCloud默认启用双重认证,必须使用专用密码代替原账户密码进行IMAP登录;
  • 使用Python的imaplib标准库或第三方库(如imapclient)连接iCloud的IMAP服务器。

示例代码:列出收件箱所有邮件主题

import imaplib
import email
from email.header import decode_header

# 配置参数
IMAP_SERVER = 'imap.mail.me.com'
IMAP_PORT = 993
USERNAME = 'your-icloud-email@icloud.com'
APP_PASSWORD = 'your-app-specific-password'

# 建立SSL连接并登录
imap_conn = imaplib.IMAP4_SSL(IMAP_SERVER, IMAP_PORT)
imap_conn.login(USERNAME, APP_PASSWORD)

# 选择收件箱(可替换为其他文件夹名称,如'Drafts')
imap_conn.select('INBOX')

# 搜索所有邮件
status, msg_ids = imap_conn.search(None, 'ALL')
message_ids = msg_ids[0].split()

# 遍历并提取邮件主题
for msg_id in message_ids:
    status, msg_data = imap_conn.fetch(msg_id, '(RFC822)')
    for part in msg_data:
        if isinstance(part, tuple):
            msg = email.message_from_bytes(part[1])
            # 解码邮件主题
            subject, encoding = decode_header(msg['Subject'])[0]
            if isinstance(subject, bytes):
                subject = subject.decode(encoding or 'utf-8')
            print(f"主题: {subject}")

# 关闭连接
imap_conn.close()
imap_conn.logout()

2. Web 模拟爬取(不推荐)

通过模拟浏览器操作iCloud网页版来获取邮件,但存在诸多问题:

  • 违反iCloud服务条款,可能导致账户被限制或封禁;
  • iCloud网页版有严格的反爬机制(如验证码、会话校验),实现和维护成本极高;
  • 页面结构随时可能更新,代码极易失效。

若仅用于测试,可使用selenium等工具模拟登录和页面操作,但绝对不建议用于生产环境。

内容的提问来源于stack exchange,提问作者pl-jay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 10:02:20