C# 使用当前登录用户通过SMTP客户端发送电子邮件

C# 使用当前登录用户通过SMTP客户端发送电子邮件,c#,asp.net,C#,Asp.net,我已经建立了一个web站点,其中包含一些通过LDAP进行身份验证的表单。当当前登录的用户单击按钮时,我正在发送一封电子邮件,但是电子邮件是从我的地址发送的,而不是从用户发送的。这造成了一点混乱 我想做的是使用登录用户帐户发送电子邮件,而不让他们再次输入用户信息 我基本上想这样做: MailMessage message = new MailMessage(); message.From = new MailAddress(User.GetIdentity); messag

我已经建立了一个web站点,其中包含一些通过LDAP进行身份验证的表单。当当前登录的用户单击按钮时,我正在发送一封电子邮件,但是电子邮件是从我的地址发送的,而不是从用户发送的。这造成了一点混乱

我想做的是使用登录用户帐户发送电子邮件,而不让他们再次输入用户信息

我基本上想这样做:

    MailMessage message = new MailMessage();
    message.From = new MailAddress(User.GetIdentity);
    message.Subject = Subject;
    message.Body = body;
    message.IsBodyHtml = true;
    SmtpClient client = new SmtpClient("address.qweqwe", 25);
    client.Credentials = new System.Net.NetworkCredential(User.Identity);
    client.Send(message);
获取用户的电子邮件不是什么大不了的事,我已经有了一些方法,但我不确定应该如何获取他们的凭据。他们已经登录访问该页面,我知道他们有一封LDAP电子邮件


有没有办法做到这一点而不强迫用户再次登录以发送电子邮件?

如果您的SMTP服务器需要凭据,我可以看到两种解决方案

  • 通过页面询问用户的网络凭据(用户名/密码)

  • 设置一个有权代表所有用户中继的帐户。这将允许您为SMTP服务器设置单个帐户。然后,每次发送电子邮件时,您所要做的就是更改MailMessage.From属性


  • 当用户在登录期间键入用户ID时,您不能将其存储在会话变量中吗?