电子邮件代码仅选择DataSet中的第一行来发送电子邮件

时间:2014-05-13 06:11:44

标签: c# .net email

当我试图通过电子邮件发送我从数据库中获取结果时... 然后只有第一行被选中。我提出了一个断点,发现我在dsresult中获得了多个值,但在向电子邮件追加dsresult时,电子邮件只选择了第一个结果。

我想我不应该使用dsresult。但是任何其他的都会给我一行中的所有值,或者将所有的calue附加到电子邮件正文中。

这是代码......

        BAdmin objBAdmin = new BAdmin();
        BEAdmin objBEAdmin = new BEAdmin();

        BAdmin objSpAdmin = new BAdmin();
        objSpAdmin.BGetInvalidCourses(objBEAdmin);

        string invalid = objBEAdmin.DsResult.Tables[0].Rows[0]["CourseId"].ToString();
        MailMessage email = new MailMessage();

        StringBuilder body = new StringBuilder();


         email = new MailMessage("email@abc.com", ConfigurationManager.AppSettings["Email_To"]);
        email.Subject = "Invalid Courses ";
        email.CC.Add(ConfigurationManager.AppSettings["FYIEmail_CC_Dataload"]);
        email.Body = "Test message: please ignore." + invalid;
        body.Append(@"<tr><td>Hi,<br/><br/> Please find the missing courses </p></td></tr>");
        body.Append("</table>");
        SmtpClient client = new SmtpClient("pod51041.outlook.com", 587);
        client.UseDefaultCredentials = false;
        client.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["username"], ConfigurationManager.AppSettings["password"]);
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.EnableSsl = true;
        client.Send(email);

3 个答案:

答案 0 :(得分:1)

在第

string invalid = objBEAdmin.DsResult.Tables[0].Rows[0]["CourseId"].ToString();

似乎只读取了结果表的第一行。你应该使用像

这样的东西
string invalid = String.Empty;
foreach ( DataRow iRow in abjBEAdmin.DsResult.Tables[0].Rows )
  invalid += iRow["CourseId"].ToString();

将每行的CourseId列附加到字符串invalid

答案 1 :(得分:1)

希望这有效。 你忘了添加email.body.tostring();

        BAdmin objBAdmin = new BAdmin();
        BEAdmin objBEAdmin = new BEAdmin();

        BAdmin objSpAdmin = new BAdmin();
        objSpAdmin.BGetInvalidCourses(objBEAdmin);

     string invalid = objBEAdmin.DsResult.Tables[0].Rows[0]["CourseId"].ToString();
        MailMessage email = new MailMessage();

        StringBuilder body = new StringBuilder();


         email = new MailMessage("abc@abc.com", ConfigurationManager.AppSettings["FYIEmail_To_Dataload"]);
        email.Subject = "Invalid Courses ";
        email.CC.Add(ConfigurationManager.AppSettings["FYIEmail_CC_Dataload"]);
        foreach (System.Data.DataRow dr in objBEAdmin.DsResult.Tables[0].Rows)
        {
            body.Append("please ignore." + dr["CourseId"].ToString());
        }
        body.Append(@"<tr><td>Hi,<br/><br/> Please find the missing courses </p></td></tr>");
        body.Append("</table>");
        email.Body = body.ToString();
        email.IsBodyHtml = true;
        SmtpClient client = new SmtpClient("pod51041.outlook.com", 587);
        client.UseDefaultCredentials = false;
        client.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["username"], ConfigurationManager.AppSettings["password"]);
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.EnableSsl = true;
        client.Send(email);

答案 2 :(得分:0)

这里你写了

string invalid = objBEAdmin.DsResult.Tables[0].Rows[0]["CourseId"].ToString();

因此它始终选择DsResult的第一行。 如果您需要在邮件中发送所有无效课程,您应该有一个循环。

我已经更改了代码......

email = new MailMessage("email@abc.com", ConfigurationManager.AppSettings["Email_To"]);
email.Subject = "Invalid Courses ";
email.CC.Add(ConfigurationManager.AppSettings["FYIEmail_CC_Dataload"]);

email.Body = "Test message:";
foreach(Datarow dr in objBEAdmin.DsResult.Tables[0].Rows)
{
body.Append("please ignore." + dr["CourseId"].ToString());
}

body.Append(@"<tr><td>Hi,<br/><br/> Please find the missing courses </p></td></tr>");
body.Append("</table>");
SmtpClient client = new SmtpClient("pod51041.outlook.com", 587);
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["username"], ConfigurationManager.AppSettings["password"]);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.EnableSsl = true;
client.Send(email);