列出邮件并下载附件
下载流程由邮件、附件和文件流三个层级组成。每个 ID 都属于指定邮箱上下文,不要跨邮箱复用。
调用顺序
- 调用查询文件夹内的邮件列表,按
nextCursor读取完整结果。 - 选择目标邮件 ID,调用列出邮件附件。
- 对目标附件调用创建附件下载会话。
- 将响应内容写入受控目录,并校验文件名、大小和内容类型。
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
生产任务应限制下载目录和总大小,拒绝包含路径穿越字符的文件名,并避免在日志中记录邮件正文或临时下载地址。
参考:原始示例。