Documentation

This is a website-friendly version of the README. For the latest details, see the repository on GitHub.

Features

  • Windows WPF UI for quick SMTP connectivity testing
  • TLS modes: none, starttls, ssl
  • AUTH testing (when supported by the server)
  • Live SMTP transcript (client/server lines)
  • Profiles to save/load common setups
  • Optional log-to-file for sharing troubleshooting output

Requirements

  • Windows 10/11
  • .NET (depending on your build target)
  • Visual Studio 2022 or the dotnet CLI

Build from source

git clone https://github.com/Antinon/SMTPTester.git
cd SMTPTester

dotnet build
dotnet run

Using the app

Connection

  • Host / Port — target SMTP/MX host (ports 25/587/465)
  • TLS Modenone, starttls, or ssl
  • Timeout — connect/read timeouts
  • EHLO domain (optional) — override EHLO/HELO domain
  • Skip certificate validation — for testing only
  • Log to file — store the raw transcript

Authentication & Message

  • Leave username/password empty to skip AUTH.
  • Send Test lets you set From/To/Subject/Body and add attachments.
  • Some providers require app passwords or OAuth; basic auth can be blocked.

TLS modes

ModeWhat it doesTypical ports
nonePlain TCP (no TLS). Useful for banner checks or legacy relays.25
starttlsConnect plain, then upgrade via STARTTLS (recommended).25 / 587
sslTLS from the first byte (SMTPS).465

Profiles

Profiles are simple .ini files — easy to share and version.

host=smtp.office365.com
port=587
tls=starttls
username=sender@contoso.com
password=********
from=sender@contoso.com
to=recipient@contoso.com
subject=SMTP tester
body=This is a test message.
send=False
skipcert=False
timeoutms=20000
logtofile=True
logpath=smtp-protocol.log
If you store profiles in git, consider omitting passwords.

Notes for common providers

  • *.mail.protection.outlook.com:25 is typically inbound MX and often does not allow AUTH.
  • Microsoft 365 submission: smtp.office365.com:587 + starttls + authentication (or OAuth).
  • Gmail may require app passwords or OAuth; basic user/pass can be blocked.

Troubleshooting

  • STARTTLS fails → verify the server advertises STARTTLS and supports required TLS versions.
  • AUTH fails → confirm username format and whether basic auth is allowed.
  • Port 25 blocks AUTH → many providers do not allow AUTH on 25; use 587 for submission.

Need help? Use the forum, or open an issue on GitHub.