邮件接入——让 AI 收发邮件
Hermes 消息平台接入第7篇:Email。Hermes 通过邮件和你对话。
邮件接入——讓 AI 收發郵件
好嘞,今天咱們來聊聊怎麼讓 Hermes 幫你收發郵件。別緊張,這事兒比你想的簡單多了——不需要什麼特殊的客戶端或者機器人 API,只要你的信箱支援 IMAP/SMTP 協定(Gmail、Outlook、Yahoo、Fastmail 這些主流的基本上都行),Hermes 就能直接收信、回信,而且回覆會乖乖待在同一個郵件討論串裡,跟真人聊天似的。
這跟 Himalaya 技能有啥區別?
官方文件裡特意提了一嘴,Hermes 內建了兩種郵件玩法:
- 郵件閘道介面卡(今天的主角):用 Python 自帶的
imaplib和smtplib,零外部依賴,配好就能用。 - Himalaya 郵件技能:讓 agent 透過終端指令管理信箱,但需要額外裝
himalayaCLI 和設定檔。
簡單說,你想讓別人直接發郵件給 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-To和References標頭保持討論串,主旨不會變成Re: Re: Re:。回覆是純文字(UTF-8)。 - 發附件:在回覆裡寫
MEDIA:/path/to/file,檔案就會作為附件寄出去。 - 防騷擾:
noreply@、mailer-daemon@、帶Auto-Submitted或List-Unsubscribe標頭的郵件會被靜默忽略,不會觸發回覆。
存取控制
預設比聊天平台嚴格得多:
- 設定了
EMAIL_ALLOWED_USERS→ 只處理名單裡的地址 - 沒設定 → 未知寄件者直接忽略
EMAIL_ALLOW_ALL_USERS=true→ 來者不拒(慎用!)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