Build and debug Python applications using AgentScope 2.x. Consult this skill for AgentScope APIs, agent tools, multi-agent orchestration, and agent service deployment.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
CLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Himalaya is a CLI email client that lets you manage emails from the terminal using IMAP, SMTP, Notmuch, or Sendmail backends.
references/configuration.md (config file setup + IMAP/SMTP authentication)himalaya binary must already be on PATH. Check with himalaya --version.
~/.config/himalaya/config.tomlRun the interactive wizard to set up an account (replace default with
any name you want, e.g. gmail, work):
himalaya account configure default
Or create ~/.config/himalaya/config.toml manually:
[accounts.personal]
email = "you@example.com"
display-name = "Your Name"
default = true
backend.type = "imap"
backend.host = "imap.example.com"
backend.port = 993
backend.encryption.type = "tls"
backend.login = "you@example.com"
backend.auth.type = "password"
backend.auth.cmd = "pass show email/imap" # or use keyring
message.send.backend.type = "smtp"
message.send.backend.host = "smtp.example.com"
message.send.backend.port = 587
message.send.backend.encryption.type = "start-tls"
message.send.backend.login = "you@example.com"
message.send.backend.auth.type = "password"
message.send.backend.auth.cmd = "pass show email/smtp"
If you are using 163 mail account, add backend.extensions.id.send-after-auth = true in the config file to ensure proper functionality.
himalaya folder list
List emails in INBOX (default):
himalaya envelope list
List emails in a specific folder:
himalaya envelope list --folder "Sent"
List with pagination:
himalaya envelope list --page 1 --page-size 20
If meet with error, try:
himalaya envelope list -f INBOX -s 1
himalaya envelope list from john@example.com subject meeting
Read email by ID (shows plain text):
himalaya message read 42
Export raw MIME:
himalaya message export 42 --full
Recommended approach: Use template write | template send pipeline for simple emails.
Send a simple email:
export EDITOR=cat
himalaya template write \
-H "To: recipient@example.com" \
-H "Subject: Email Subject" \
"Email body content" | himalaya template send
Send with multiple headers:
export EDITOR=cat
himalaya template write \
-H "To: recipient@example.com" \
-H "Cc: cc@example.com" \
-H "Subject: Email Subject" \
"Email body content" | himalaya template send
Send with attachments (using Python):
For emails with attachments, use Python's smtplib and email.mime modules:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
msg = MIMEMultipart()
msg['From'] = 'sender@163.com'
msg['To'] = 'recipient@example.com'
msg['Subject'] = 'Email with attachment'
msg.attach(MIMEText('Email body', 'plain'))
# Add attachment
with open('/path/to/file.pdf', 'rb') as f:
part = MIMEBase('application', 'octet-stream')
part.set_payload(f.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="file.pdf"')
msg.attach(part)
server = smtplib.SMTP_SSL('smtp.163.com', 465)
server.login('sender@163.com', 'password')
server.send_message(msg)
server.quit()
⚠️ MML attachment limitations: The template send command with MML format may fail with "cannot parse MML message: empty body" when using multipart/attachments. This is a known issue in himalaya v1.1.0. Use Python approach for attachments.
⚠️ Avoid message write for automation: The himalaya message write command requires interactive TUI selection (Edit/Discard/Quit) and will hang in non-interactive environments.
⚠️ message send limitations: Direct himalaya message send <raw_email> may fail with "cannot send message without a recipient" due to header parsing issues. Use template send instead.
Configuration requirement: Ensure message.send.save-to-folder is set in config.toml to avoid "Folder not exist" errors:
[accounts.163]
# ... other config ...
message.send.save-to-folder = "Sent"
For 163 mail accounts, create the Sent folder first if it doesn't exist:
himalaya folder create Sent
Move to folder:
himalaya message move 42 "Archive"
Copy to folder:
himalaya message copy 42 "Important"
himalaya message delete 42
Add flag:
himalaya flag add 42 --flag seen
Remove flag:
himalaya flag remove 42 --flag seen
List accounts:
himalaya account list
Use a specific account:
himalaya --account work envelope list
Save attachments from a message:
himalaya attachment download 42
Save to specific directory:
himalaya attachment download 42 --dir ~/Downloads
Most commands support --output for structured output:
himalaya envelope list --output json
himalaya envelope list --output plain
Enable debug logging:
RUST_LOG=debug himalaya envelope list
Full trace with backtrace:
RUST_LOG=trace RUST_BACKTRACE=1 himalaya envelope list
himalaya --help or himalaya <command> --help for detailed usage.references/message-composition.md).pass, system keyring, or a command that outputs the password.template write | template send pipeline with export EDITOR=cat.backend.extensions.id.send-after-auth = true and message.send.save-to-folder = "Sent" in config.아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Build and debug Python applications using AgentScope 2.x. Consult this skill for AgentScope APIs, agent tools, multi-agent orchestration, and agent service deployment.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use this skill when the user explicitly wants to connect to a running Chrome browser, scan local CDP ports, specify a `cdp_port`, or share a single browser across multiple agents/tools. By default, browser_use already launches the browser using managed CDP; if the user does not want to expose browser history, cookies, or other sensitive data, recommend using `private_mode=true` instead.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
当用户明确希望连接到已运行的 Chrome 浏览器、扫描本地 CDP 端口、显式指定 `cdp_port`,或让多个 agent / 工具共享同一个浏览器时,使用本 skill。当前 browser_use 默认已使用 managed CDP 启动浏览器;如果用户不希望暴露浏览器历史、Cookies 等敏感信息,推荐改用 `private_mode=true` 的隐私模式。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
当用户需要控制 browser_use 的浏览器启动方式时,使用本 skill。当前 browser_use 默认使用 managed CDP 启动本地 Chrome/Chromium;`headed` 控制是否显示窗口,`private_mode` 控制是否禁用 CDP、改走 Playwright,`browser_args` 传入额外的 Chromium 启动参数,`executable_path` 指定自定义浏览器可执行文件路径。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use this skill when the user needs to control the browser launch mode for browser_use. By default, browser_use launches the local Chrome/Chromium using managed CDP; `headed` controls whether the window is visible, and `private_mode` controls whether CDP is disabled in favor of Playwright.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use this skill to proactively send a one-way message to a user/session/channel, usually only when the user explicitly asks to send to a channel/session or when proactive notification is needed. First query sessions with qwenpaw chats list, then push with qwenpaw channels send.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.