0

我正在 SqlDataSource 中检索用户的电子邮件 ID,并希望向该电子邮件 ID 发送电子邮件。下面是 SQL 数据源的代码。

 <asp:SqlDataSource ID="UserDetailsSqlDataSource" runat="server" 
    ConnectionString="<%$ ConnectionStrings:UserDetailsConnectionString %>" 
    SelectCommand="SELECT [LoweredEmail] FROM [vw_aspnet_MembershipUsers] WHERE     ([UserName] = @UserName)">
   <SelectParameters>
        <asp:CookieParameter CookieName="userName" Name="UserName" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

下面是发送电子邮件的代码。

   MailMessage mail = new MailMessage();
   mail.To.Add();

我不知道如何获取在 mail.To.Add(); 中检索到的电子邮件 ID;

4

2 回答 2

1

您可以以编程方式调用Selecta 的方法,该方法SqlDataSource将返回以下内容之一:

  • DataView何时DataSourceMode设置为DataSet
  • IDataReader何时DataSourceMode设置为DataReader

这是一个使用 a 的示例SqlDataReader

var args = System.Web.UI.DataSourceSelectArguments.Empty;
var reader = (SqlDataReader) UserDetailsSqlDataSource.Select(args);

while(reader.Read()) {
   //do something with each returned record, e.g.
   MailMessage mail = new MailMessage();
   mail.To.Add(reader["LoweredEmail"].ToString());
}
于 2012-04-27T02:04:37.367 回答
1

试试这个,你可以修改代码来传递参数:

        string temp = string.Empty;
        string cmdText = "SELECT [LoweredEmail] FROM [vw_aspnet_MembershipUsers] WHERE     ([UserName] = @UserName)"
        using (SqlConnection conn = new SqlConnection(ConnectionString))
        {
            conn.Open();
            using (SqlCommand cmd = new SqlCommand(cmdText, conn))
            {
                cmd.CommandType = CommandType.Text;
                         cmd.Parameters.AddWithValue(@UserName, UserName);
                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    while(reader.Read())
                    {
                        temp = reader.GetValue(0).ToString(); // email ID
                    }
                }
            }
            conn.Close();
于 2012-04-27T12:21:20.073 回答