Если вы используете .NET в Windows, вы можете использовать службу IIS SMTP.Используйте SmtpClient и установите метод доставки в каталог получения.В этом режиме SmtpClient будет записывать в папку раскладки SMTP (что-то вроде c: \ inetpub \ smtp_root \ pickup) вместо попытки доставки самой почты.Эта папка является очередью сообщений, а служба SMTP будет обрабатывать доставку, повторные попытки, отчеты о недоставке и т. Д. Гораздо лучше, чем пытаться написать это самостоятельно.