feat: 이메일 폴더 필터링 — 테크니컬코리아/Gmail/개인 지정 가능
"테크니컬코리아 메일만" → Technicalkorea 폴더만 검색 "구글 메일" → Gmail만, "개인 메일" → INBOX만 폴더 미지정 시 전체 검색 유지 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -79,8 +79,8 @@ def _connect():
|
||||
return conn
|
||||
|
||||
|
||||
async def search(query: str = "", days: int = 7) -> dict:
|
||||
"""전체 폴더에서 최근 메일 검색."""
|
||||
async def search(query: str = "", days: int = 7, folder: str = "") -> dict:
|
||||
"""메일 검색. folder 지정 시 해당 폴더만, 없으면 전체."""
|
||||
try:
|
||||
conn = _connect()
|
||||
if not conn:
|
||||
@@ -92,10 +92,11 @@ async def search(query: str = "", days: int = 7) -> dict:
|
||||
else:
|
||||
criteria = f"(SINCE {since})"
|
||||
|
||||
search_folders = [folder] if folder else FOLDERS
|
||||
all_results = []
|
||||
failed_folders = []
|
||||
|
||||
for folder in FOLDERS:
|
||||
for folder in search_folders:
|
||||
try:
|
||||
conn.select(folder, readonly=True)
|
||||
_, data = conn.search(None, criteria)
|
||||
|
||||
@@ -83,6 +83,7 @@ async def _exec_email(operation: str, params: dict) -> dict:
|
||||
return await email_tool.search(
|
||||
params.get("query", ""),
|
||||
params.get("days", 7),
|
||||
params.get("folder", ""),
|
||||
)
|
||||
elif operation == "read":
|
||||
return await email_tool.read(params.get("uid", ""))
|
||||
|
||||
Reference in New Issue
Block a user