🤖HermesBlog
Hermes 消息平台接入 · 第7篇2026/8/9· Easy Understand Hermes Agent

邮件接入——让 AI 收发邮件

Hermes 消息平台接入第7篇:Email。Hermes 通过邮件和你对话。

messaging-email 邮件接入——讓 AI 收發郵件


好嘞,今天咱們來聊聊怎麼讓 Hermes 幫你收發郵件。別緊張,這事兒比你想的簡單多了——不需要什麼特殊的客戶端或者機器人 API,只要你的信箱支援 IMAP/SMTP 協定(Gmail、Outlook、Yahoo、Fastmail 這些主流的基本上都行),Hermes 就能直接收信、回信,而且回覆會乖乖待在同一個郵件討論串裡,跟真人聊天似的。

這跟 Himalaya 技能有啥區別?

官方文件裡特意提了一嘴,Hermes 內建了兩種郵件玩法:

  • 郵件閘道介面卡(今天的主角):用 Python 自帶的 imaplibsmtplib零外部依賴,配好就能用。
  • Himalaya 郵件技能:讓 agent 透過終端指令管理信箱,但需要額外裝 himalaya CLI 和設定檔。

簡單說,你想讓別人直接發郵件給 agent 並收到回覆,用閘道介面卡就對了。

準備工作

  • 一個專用的信箱帳號(別拿你個人信箱折騰)
  • 開啟 IMAP
  • 如果用的是 Gmail 或開了雙重驗證的信箱,需要產生應用程式專用密碼(16 位那個,不是你的登入密碼)

Gmail 使用者去 App Passwords 產生一個就行。Outlook 使用者去 Security Settings 裡找。其他信箱就去翻翻提供者的文件,記下 IMAP 和 SMTP 的主機和連接埠(一般是 993 和 587)。

第一步:設定 Hermes

最省事的方式:

hermes gateway setup

Email,跟著精靈填信箱、密碼、IMAP/SMTP 主機和允許寄件者清單就行。

想手動配?打開 ~/.hermes/.env 加上這些:

# 必填
EMAIL_ADDRESS=hermes@gmail.com
EMAIL_PASSWORD=abcd efgh ijkl mnop    # 應用程式專用密碼
EMAIL_IMAP_HOST=imap.gmail.com
EMAIL_SMTP_HOST=smtp.gmail.com

# 安全(強烈建議)
EMAIL_ALLOWED_USERS=your@email.com,colleague@work.com

# 選填
EMAIL_IMAP_PORT=993
EMAIL_SMTP_PORT=587
EMAIL_POLL_INTERVAL=15                 # 輪詢間隔(秒)
EMAIL_HOME_ADDRESS=your@email.com      # cron 任務的預設投遞目標

第二步:啟動閘道

hermes gateway              # 前景執行
hermes gateway install      # 安裝為使用者服務
sudo hermes gateway install --system   # Linux 開機自啟

啟動時會自動測試 IMAP/SMTP 連線,把收件匣裡既有的郵件標記為「已讀」(只處理新郵件),然後開始輪詢。

它是怎麼運作的?

  • 收信:預設每 15 秒檢查一次未讀郵件。主旨行會作為上下文(比如 [Subject: Deploy to production]),回覆郵件(Re: 開頭)不會重複加前綴。附件會快取到本機——圖片能餵給視覺工具,PDF、ZIP 等文件也能直接存取。HTML 郵件會去標籤提取純文字。
  • 回信:透過 SMTP 傳送,自動帶上 In-Reply-ToReferences 標頭保持討論串,主旨不會變成 Re: Re: Re:。回覆是純文字(UTF-8)。
  • 發附件:在回覆裡寫 MEDIA:/path/to/file,檔案就會作為附件寄出去。
  • 防騷擾noreply@mailer-daemon@、帶 Auto-SubmittedList-Unsubscribe 標頭的郵件會被靜默忽略,不會觸發回覆。

存取控制

預設比聊天平台嚴格得多:

  1. 設定了 EMAIL_ALLOWED_USERS → 只處理名單裡的地址
  2. 沒設定 → 未知寄件者直接忽略
  3. EMAIL_ALLOW_ALL_USERS=true → 來者不拒(慎用!)
  4. platforms.email.unauthorized_dm_behavior: pair → 未知寄件者會收到配對碼

強烈建議用專用收件匣 + 設定 EMAIL_ALLOWED_USERS,別讓 agent 亂回陌生郵件。

不想收附件?

config.yaml 裡加:

platforms:
  email:
    skip_attachments: true

附件會被跳過,但郵件內文照常處理。

常見問題

問題 解決
啟動時報 “IMAP connection failed” 檢查 EMAIL_IMAP_HOST 和連接埠,確認信箱已開啟 IMAP(Gmail 在設定 → 轉寄和 POP/IMAP 裡開)

搞定!現在你的 Hermes 就能收發郵件了。去試試給它發一封吧,記得用允許清單裡的地址哦。

📖 官方文档

本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/messaging/email