2012-02-22 77 views
1

我正在创建一个电子邮件帮助器,发送电子邮件,这是工作正常,所有,但我需要通过当前用户的用户名和密码。电子邮件帮手认证

有什么办法可以做到这一点?

我已经使用了Environment.UserName;,这个用户名正确,但我不知道如何获取密码。

这是我正在做的电子邮件帮手。

public void SendEmail(int port, string host, string displayName, string subject, string body, string addressFrom, string addressTo, string password, string username) 
     { 
      MailMessage messageToSend = new MailMessage(); 
      messageToSend .Subject = subject; 
      messageToSend .Body = body; 
      messageToSend .From = new MailAddress(addressFrom, displayName); 
      messageToSend .To.Add(addressTo); 
      messageToSend .Priority = MailPriority.High; 
      messageToSend .IsBodyHtml = true; 
      SmtpClient SMTPclient = new SmtpClient(Host, Port); 
      SMTPclient .EnableSsl = false; 
     SMTPclient.Credentials = new NetworkCredential(Username, Password); 
      SMTPclient.Send(message); 
     } 
+1

你有新的' NetworkCredential(用户名,密码)'和方法参数'string password,string username'用小写。这是一个错字吗? – 2012-02-22 09:47:08

回答

0

您无法检索当前记录的用户密码!
Windows存储密码的散列,而不是密码本身。

1

没有办法,你可以得到密码,但你其实并不需要密码,您需要credentials for current user,您可以获取和分配给您的SMTPclient如下

SMTPclient.Credentials = CredentialCache.DefaultNetworkCredentials; 
+0

我尝试过,但它不起作用,试图发送电子邮件时出现此错误:邮箱不可用。服务器响应是:5.7.1客户端没有权限发送此发件人。 – johnnie 2012-02-22 10:59:01

+0

因此,在这种情况下请检查当前用户是否具有服务器上的权限。 – Maheep 2012-02-22 11:03:00

+0

@ johnnie是您的SMTP和MS Exchange?除此之外,5.7.1错误代码听起来像是试图通过SMTPd传递消息,但它不会让您这样做,只是因为它配置为这样做。我认为您的IP地址/网络掩码未设置为SMTP配置中允许的中继列表。你是否使用不同的SMTP服务器来尝试你的代码? – kayess 2015-08-14 10:23:06