Если вы используете классы ASP.NET и System.Net.Mail, вы, вероятно, отправляете почту через экземпляр IIS на компьютере веб-сервера (я не уверен, так как вы не указали). Нет хорошего способа узнать, что происходит с вашим агентом пересылки почты (IIS SMTP). Он имеет собственную логику повторных попыток, и по умолчанию доставка сообщения может занять много времени.
Как вы обнаруживаете, что почта не была доставлена? Откуда исходит «тайм-аут»?
У вас должен быть фоновый процесс, который обрабатывает отправку почты. Если доставка в MTA прошла успешно, вы должны предположить, что все в порядке. Если вы не попали в черный список для СПАМА, большинство MTA будут повторять попытки до тех пор, пока не пройдут. Если вы на самом деле получаете сообщение об ошибке при удалении сообщения с помощью MTA, обязательно попробуйте снова или выясните, что является причиной сбоя, и исправьте ошибку. Честно говоря, эта часть никогда не должна потерпеть неудачу.
Возможно, вы захотите отслеживать обратный адрес для сообщений о недоставке, чтобы вы могли предпринять какие-то действия, когда точно знаете, когда электронное письмо не было доставлено. Но если пользователь еще не может войти в систему, нет хорошего способа сообщить ему, что произошло. Возможно, вы могли бы установить cookie со значением, которое вы связываете с электронной почтой, и поместить что-то на страницу входа / регистрации, если вы не смогли доставить почту.