当我试图通过电子邮件发送我从数据库中获取结果时...
然后只有第一行被选中。我提出了一个断点,发现我在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);
答案 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);