У меня есть приложение, которое будет отправлять аутентифицированные электронные письма с использованием System.Net.Mail и System.Net.NetworkCredential. Мой вопрос: как сохранить пароль, необходимый для создания объекта NetworkCrednetial?
У приложения нет логина, но я мог бы настроить опцию, которая позволяет пользователю вводить свои учетные данные электронной почты (почти во всех случаях это будет их логин в Windows). Я не могу использовать Active Directory, потому что не все клиенты используют его.
Я мог получить пароль от пользователя и затем сохранить его в реестре пользователей, файле или базе данных. Очевидно, мне придется его зашифровать. Я не очень знаком с шифрованием, поэтому некоторые указатели были бы признательны, если люди думают, что это лучший механизм.
Я бы предпочел избегать необходимости хранить что-либо, так что могу ли я обойтись без необходимости хранить учетные данные самостоятельно, возможно, я могу получить их из текущего входа в систему или где-то еще?





Для хранения имени пользователя и пароля (в Windows) используйте DPAPI. Интерфейс .Net к нему - это классы Защищенные данные и ProtectedMemory.
Но сначала вы можете попробовать, работает ли UseDefaultCredentials или DefaultNetworkCredentials в вашей среде.
Вы также можете использовать пользовательский интерфейс учетных данных Win32 - существует ряд примеров использования этого из .NET, включая этот на MSDN.
Это не мое идеальное решение, но, похоже, лучший вариант. DefaultCredentials у меня не подойдет, но я запрошу пароль и сохраню его с помощью класса ProtectedData. Спасибо