跳到主要内容

列出邮件并下载附件

下载流程由邮件、附件和文件流三个层级组成。每个 ID 都属于指定邮箱上下文,不要跨邮箱复用。

调用顺序​

  1. 调用查询文件夹内的邮件列表,按 nextCursor 读取完整结果。
  2. 选择目标邮件 ID,调用列出邮件附件。
  3. 对目标附件调用创建附件下载会话。
  4. 将响应内容写入受控目录,并校验文件名、大小和内容类型。

Python 示例​

from pathlib import Path
import requests

API_BASE = "https://alimail-cn.aliyuncs.com"


def download_attachment(
access_token: str,
mailbox: str,
message_id: str,
attachment: dict,
output_dir: Path,
) -> Path:
headers = {"Authorization": f"Bearer {access_token}"}
response = requests.get(
f"{API_BASE}/v2/users/{mailbox}/messages/{message_id}/attachments/{attachment['id']}/$value",
headers=headers,
timeout=60,
)
response.raise_for_status()

safe_name = Path(attachment["name"]).name
target = output_dir / safe_name
target.write_bytes(response.content)
return target

生产任务应限制下载目录和总大小,拒绝包含路径穿越字符的文件名,并避免在日志中记录邮件正文或临时下载地址。

参考:原始示例。