Thorbjørn и symcbean предоставили много полезной информации, но она может быть ошеломляющей в своей полноте. Я постараюсь сделать его более доступным:
О худшем, что вы можете сделать, это встроить SMTP-клиент в ваше приложение и полагаться на него, чтобы отправлять почту в любую точку мира. Гораздо лучшим решением является запуск «стандартного» MTA и / или SMTP-сервера на вашем собственном компьютере локально или, в худшем случае, внутри вашей собственной сети.
Таким образом, ваше приложение должно получать почту только до вашего собственного почтового сервера, который, будем надеяться, будет находиться в порту 25 на той же машине. Никакой SSL-кодировки, никакой спам-фильтрации, не куча вещей, которые могут пойти не так. Кроме того, если ваш почтовый сервер находится на том же компьютере, что и ваше приложение, они (как правило) либо оба будут недоступны, либо оба не работают.
После того, как ваше приложение отправило свою почту на ваш локальный почтовый сервер (это быстро и почти надежно), проблемой этого сервера является отправка почты в конечный пункт назначения. На сервере Linux у вас будет установлено что-то вроде Sendmail, qmail, exim или postfix; в Windows я не знаю.
Любой из этих почтовых серверов «из коробки» очень компетентен в получении почты. Автоматический повтор уже встроен, причем повторы выполняются через (например) 1 час, 2 часа, 4, 12, 24 и 48 часов. Ваш почтовый сервер приложит все усилия для доставки вашей почты и сделает это без дополнительных усилий с вашей стороны. Неудачные попытки появятся в журнале почтового сервера, и вы можете проанализировать это и сделать свои выводы. Если это не удается после последней возможной попытки, это также отмечается в файле журнала, и вы можете сделать вывод, что что-то не так на принимающей стороне. Вся эта мощь уже встроена, и вы даже не должны думать о попытке встроить ее в свой собственный почтовый клиент.
Заключительное примечание. Возможно, что передача прошла успешно физически, то есть сообщение было доставлено, но затем почтовый сервер или клиент получателя рассмотрел его как спам; или (человек) получатель просто удалил его случайно. Никакое программное обеспечение не решит эту проблему с уверенностью.