smtp-edc

SMTP-EDC Logo

Release Go Report Card License: MIT

SMTP-EDC (SMTP Enhanced Diagnostics Client)

SMTP-EDC is a powerful, feature-rich SMTP testing tool written in Go, similar to SWAKS (SWiss Army Knife for SMTP). It provides both a command-line interface and a modern desktop application built with Wails for comprehensive SMTP server testing and email diagnostics.

Features

Core SMTP Testing

User Interfaces

  1. Command Line Interface (CLI): Traditional terminal-based interface for automation and scripting
  2. Desktop GUI: Modern cross-platform desktop application built with Wails v2 and React/TypeScript
  3. MCP Server: Model Context Protocol server for AI assistant integration

Installation

Using Homebrew

# Add the tap
brew tap asachs01/smtp-edc

# Install SMTP-EDC
brew install smtp-edc

Using Go Install

go install github.com/asachs01/smtp-edc/cmd/smtp-edc@latest

From Source

git clone https://github.com/asachs01/smtp-edc.git
cd smtp-edc
go build -tags cli -o smtp-edc cmd/smtp-edc/main.go  # CLI version

Building the Desktop Application

# Install Wails (if not already installed)
go install github.com/wailsapp/wails/v2/cmd/wails@latest

# Build the desktop application
wails build

# Or for development
wails dev

Quick Start

Command Line Usage

# Basic SMTP connection test
./smtp-edc -server smtp.gmail.com -port 587 -username your@email.com -password yourpassword

# Send a test email
./smtp-edc -server smtp.gmail.com -port 587 -username your@email.com -password yourpassword \\
  -from your@email.com -to recipient@example.com -subject "Test Email" -body "This is a test."

# Test with STARTTLS
./smtp-edc -server smtp.gmail.com -port 587 -starttls -username your@email.com -password yourpassword

Desktop Application

  1. Launch the application: ./smtp-edc-ui (or use wails dev for development)
  2. Configure your SMTP connection settings
  3. Compose and send test messages
  4. View detailed connection logs and diagnostics

MCP Server (AI Assistant Integration)

# Start MCP server with STDIO transport (for local AI tools)
./smtp-edc mcp-server -transport stdio

# Start MCP server with HTTP transport (for remote access)
./smtp-edc mcp-server -transport http -port 8080

See MCP Integration Documentation for detailed usage.

Configuration

SMTP-EDC supports configuration via:

Example Configuration File

server: smtp.gmail.com
port: 587
username: your@email.com
password: yourpassword
auth_type: PLAIN
starttls: true
skip_verify: false
templates:
  test: "This is a test email from SMTP-EDC"

Project Structure

smtp-edc/
├── cmd/smtp-edc/           # CLI application entry point
├── main.go                 # Wails desktop application entry point
├── app.go                  # Wails backend service layer
├── frontend/               # React/TypeScript frontend for desktop app
├── internal/
│   ├── auth/              # Authentication implementations
│   ├── client/            # SMTP client logic
│   ├── config/            # Configuration management
│   ├── message/           # Message composition and templates
│   └── security/          # Security and logging features
├── docs/                  # Comprehensive documentation
└── wails.json            # Wails project configuration

Development

Prerequisites

Development Workflow

# Install dependencies
go mod download
cd frontend && npm install

# Run desktop app in development mode
wails dev

# Build for production
wails build

# Run tests
go test ./...

Color Theme

The desktop application uses a carefully chosen color palette:

Documentation

Comprehensive documentation is available in the docs/ directory:

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Comparison with SWAKS

SMTP-EDC provides similar functionality to SWAKS with several enhancements:

Roadmap

Support

For issues, feature requests, or questions: