Вход в аккаунт перед отправкой электронной почты - PullRequest
0 голосов
/ 19 марта 2012

Я разрабатываю приложение для отправки электронной почты с помощью SmtpClient, работает очень хорошо, но у меня есть вопрос об аутентификации пользователя, потому что коды, которые я видел, вы можете узнать только, если адрес электронной почты и пароль верны, когда электронная почтаотправлено.

Есть ли способ сделать эту аутентификацию раньше.Я использую этот пример в качестве примера:

public void SendMessage()
{
    MailMessage mensagem = new MailMessage();
    mensagem.From = new MailAddress(email);
    mensagem.To.Add(txtto.Text);
    mensagem.Subject = txtsubject.Text;
    mensagem.Body = richMessage.Text;

    SmtpClient smtp = new SmtpClient();

    if (Form1.servidor.Equals("hotmail.com"))
    {
        smtp.Host = "smtp.live.com";
        smtp.Port = 25;
        smtp.EnableSsl = true;
    }

    smtp.Credentials = new System.Net.NetworkCredential(email, Form1.password);

    //only in this line is actually verified the existence of the user + password
    smtp.Send(mensagem);    
}

Мне не нужно отправлять сообщение, чтобы узнать, правильный ли пароль пользователя +.Кто-нибудь знает, может быть, другое пространство имен ...

спасибо.

1 Ответ

0 голосов
/ 19 марта 2012

Вы можете использовать олицетворение, например, с это небольшой класс олицетворения , чтобы попытаться войти в систему пользователя Windows.

т.е. поместите следующий блок using вокруг кода для запуска под другой учетной записью пользователя:

using ( new Impersonator( "myUsername", "myDomainname", "myPassword" ) )
{
   ...

   <code that executes under the new context>

   ...
}

Вы можете try...catch вокруг блока using проверить неправильный пароль или, что лучше, использовать функцию внутри источника Impersonator для входа и проверки результата, то есть без перехвата (производительности).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...