delete_email
Remove emails permanently from your mailbox by marking them as deleted and expunging them from the server. Specify the message ID or UID to target specific emails for deletion.
Instructions
Delete email (mark as deleted and expunge)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Folder containing the email (default: INBOX) | INBOX |
| message_id | No | Message ID (sequence number) | |
| uid | No | Unique ID of the message |
Implementation Reference
- src/mail_mcp/operations/move.py:237-292 (handler)The core implementation of the delete_email logic within the EmailMove class, which marks emails with the \\Deleted flag in the IMAP folder.
def delete_email( self, folder: str, uids: int | list[int], expunge_immediately: bool = False ) -> bool: """ Delete emails from a folder. This marks emails with \\Deleted flag. If expunge_immediately is True, permanently deletes them. Otherwise, they will be deleted when the folder is expunged or closed. Args: folder: Folder containing the emails uids: Email UID or list of UIDs to delete expunge_immediately: If True, permanently delete now Returns: True if successful Raises: EmailMoveError: If operation fails Example: >>> move = EmailMove(conn) >>> move.delete_email('INBOX', [1, 2, 3]) True """ if not folder: raise EmailMoveError("Folder name is required") # Select folder self._select_folder(folder) uid_string = self._validate_uids(uids) try: # Add \\Deleted flag response = self._conn.uid("STORE", uid_string, "+FLAGS (\\Deleted)") if response[0] != b"OK": error_msg = ( response[1][0].decode("utf-8", errors="replace") if response[1] else "Unknown error" ) raise EmailMoveError(f"Failed to delete email: {error_msg}") # Expunge if requested if expunge_immediately: self.expunge(folder) return True except EmailMoveError: raise except Exception as e: raise EmailMoveError(f"Failed to delete email: {str(e)}")