返回 MCP 目录
public公开dns本地运行

Notmuch Sendmail

MCP Notmuch Sendmail是一个连接Claude Desktop与notmuch邮件数据库的工具,可实现邮件搜索、浏览、撰写和智能回复功能。

article

README

🚀 MCP Notmuch Sendmail

MCP Notmuch Sendmail 作为您的邮件助手,将 Claude 桌面版与您的 notmuch 邮件数据库连接起来,让您可以便捷地搜索、浏览、编写和管理邮件,极大提升邮件处理效率。

🚀 快速开始

依赖安装

pip install markdown-it-py html2text python-notmuch

启动 MCP Sendmail

python3 mcp_sendmail.py

✨ 主要特性

  • 发信:通过 smtplib 发送邮件,支持 HTML 和纯文本格式。
  • 解析邮件:使用 mail-parser 库解析邮件内容,识别邮件头和正文。
  • 模板渲染:使用 Jinja2 模板引擎生成自定义邮件内容。
  • 附件管理:支持添加任意类型的附件文件。
  • 依赖管理:通过 pip 管理所有第三方库,确保兼容性和可维护性。
  • 模块化设计:功能模块独立开发和测试,便于扩展和维护。
  • 模板支持:使用 Jinja2 模板引擎实现邮件内容的动态生成。

📦 安装指南

依赖安装

pip install markdown-it-py html2text python-notmuch

启动 MCP Sendmail

python3 mcp_sendmail.py

💻 使用示例

基础用法

配置 SMTP 信息

config.py 文件中填写您的 SMTP 服务器信息:

_SMTP_SERVER = 'smtp.example.com'
_SMTP_PORT = 587
_SMTP_USERNAME = 'your_email@example.com'
_SMTP_PASSWORD = 'your_password'

发送邮件示例

# 发送纯文本邮件
send_plain_text("收件人邮箱", "邮件主题", "邮件正文内容")

# 发送 HTML 格式邮件
send_html_email("收件人邮箱", "邮件主题", "<h1>HTML 邮件</h1><p>这是 HTML 格式的邮件正文。</p>", ["attachment1.pdf"])

高级用法

纯文本邮件发送

def send_plain_text(to, subject, body):
    msg = MIMEText(body)
    msg['Subject'] = subject
    msg['From'] = _SMTP_USERNAME
    msg['To'] = to
    
    with smtplib.SMTP(_SMTP_SERVER, _SMTP_PORT) as server:
        server.starttls()
        server.login(_SMTP_USERNAME, _SMTP_PASSWORD)
        server.sendmail(_SMTP_USERNAME, [to], msg.as_string())

HTML 格式邮件发送

def send_html_email(to, subject, html_content, attachments=None):
    msg = MIMEMultipart('alternative')
    msg.attach(MIMEText('', 'plain', 'utf-8'))
    
    templateLoader = jinja2.FileSystemLoader(searchpath="./templates")
    templateEnv = jinja2.Environment(loader=templateLoader)
    template = templateEnv.get_template("email_template.html")
    output_text = template.render()
    
    part = MIMEText(output_text, 'html')
    msg.attach(part)
    
    if attachments:
        for attachment in attachments:
            with open(attachment, 'rb') as file:
                part = MIMEBase('application', 'octet-stream')
                part.set_payload(file.read())
                encoders.encode_base64(part)
                part.add_header('Content-Disposition', f'attachment; filename="{os.path.basename(attachment)}"')
                msg.attach(part)
    
    with smtplib.SMTP(_SMTP_SERVER, _SMTP_PORT) as server:
        server.starttls()
        server.login(_SMTP_USERNAME, _SMTP_PASSWORD)
        server.sendmail(_SMTP_USERNAME, [to], msg.as_string())

📚 详细文档

项目结构

mcp_sendmail/
├── sendmail.py         # 邮件发送核心逻辑
├── templates/          # HTML 邮件模板文件夹
│   └── email_template.html    # 示例 HTML 邮件模板
└── config.py           # SMTP 服务器配置信息

贡献与支持

  • 问题报告:欢迎提交任何遇到的问题或改进建议。
  • 功能扩展:希望增加更多邮件发送和管理功能。
  • 文档完善:帮助完善项目文档,使更多人能够轻松使用。

通过 MCP Notmuch Sendmail,让 Claude 桌面版成为您强大的邮件管理工具。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端