C# email workflows usually need two capabilities:

  • send reliably through SMTP or API,
  • verify receive behavior in tests.

This guide covers both using MailKit and MailSlurp.

Architecture in one view

LayerPurposeTypical library
Outbound sendDeliver transactional messagesMailKit SMTP client
Inbound verificationConfirm message behavior in testsMailSlurp APIs
Validation/qualityReduce bounce and malformed payloadsMailSlurp validation endpoints

Use:

  • for robust SMTP and MIME handling.
  • NuGet package for disposable inboxes, waits, and verification helpers.

Install packages:

Configure MailSlurp in .NET

Imports:

Set your API key and configuration:

Create a disposable inbox for testing:

Send email with MailKit

Build a :

Send with configured SMTP client:

Receive and assert email in tests

Wait for the message using :

Fetch by ID when needed:

Attachment handling

Use for multipart content and attachments:

Then send with the same SMTP client workflow.

Validate addresses before send

To reduce bounce risk, validate addresses before large sends:

Multiple recipients

Example test pattern: verification emails

Use a browser test (Selenium/Playwright), then assert email delivery:

Extract a verification code:

Production checklist for C# email

  • Configure SMTP TLS and timeout values explicitly.
  • Track send failures by SMTP response class.
  • Keep inboxes isolated per test run in CI.
  • Assert subject/body/token behavior before release.

Next resources