markAsRead
Mark email messages as read in your inbox using their unique identifiers. This tool helps manage email notifications and organize your mailbox by updating message status.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | ||
| folder | No | INBOX |
Implementation Reference
- src/tools/mail-service.ts:518-540 (handler)Core implementation of markAsRead in MailService class. Connects to IMAP, opens the specified folder, and adds the '\Seen' flag to the email UID to mark it as read.async markAsRead(uid: number | string, folder: string = 'INBOX'): Promise<boolean> { await this.connectImap(); // 确保 uid 为数字类型 const numericUid = typeof uid === 'string' ? parseInt(uid, 10) : uid; return new Promise((resolve, reject) => { this.imapClient.openBox(folder, false, (err) => { if (err) { reject(err); return; } this.imapClient.addFlags(numericUid, '\\Seen', (err) => { if (err) { reject(err); return; } resolve(true); }); }); }); }
- src/tools/mail.ts:1133-1163 (registration)Registration of the 'markAsRead' MCP tool. Defines input schema using Zod (uid: number, folder: string default 'INBOX') and a wrapper handler that delegates to MailService.markAsRead and formats the response."markAsRead", { uid: z.number(), folder: z.string().default('INBOX') }, async ({ uid, folder }) => { try { const numericUid = Number(uid); const success = await this.mailService.markAsRead(numericUid, folder); if (success) { return { content: [ { type: "text", text: `邮件(UID: ${uid})已标记为已读` } ] }; } else { return { content: [ { type: "text", text: `标记邮件(UID: ${uid})为已读失败` } ] }; } } catch (error) { return { content: [ { type: "text", text: `标记邮件为已读时发生错误: ${error instanceof Error ? error.message : String(error)}` } ] }; } }
- src/tools/mail.ts:1134-1137 (schema)Zod schema defining input parameters for the markAsRead tool: uid (number, required) and folder (string, defaults to 'INBOX').{ uid: z.number(), folder: z.string().default('INBOX') },