发送电子邮件之前登录帐户

时间:2012-03-19 18:48:45

标签: c# winforms email authentication

我正在开发一个使用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 :(得分:0)

您可以使用模拟,例如使用this the small impersonation class尝试登录Windows用户。

即。在代码周围放置以下using块以在其他用户帐户下运行:

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

   <code that executes under the new context>

   ...
}

您可以在使用块周围try...catch检查密码是否错误,或者更好的是,使用Impersonator来源中的函数登录并检查结果,即不捕获(性能)