2015-07-11 41 views
0

我必须通过SMTP服务器发送邮件。我可以发送单个值。但是,我想发送List<>值作为邮件正文以表格格式或其他结构。我包括我的代码如下:发送List <>值与身体在邮件 - SMTP服务器

MailMessage mailObj = new MailMessage("[email protected]", "[email protected]", "Reg : send mail", 
"Emp Name :" + "Emp1" + Environment.NewLine + "Date From : " + Mon + "Date To : " + Fri); 
SmtpClient SMTPServer = new SmtpClient("smtp.gmail.com", ***); 
SMTPServer.Host = "smtp.gmail.com"; 
SMTPServer.EnableSsl = true; 
SMTPServer.Timeout = 200000; 
SMTPServer.Credentials = new System.Net.NetworkCredential("[email protected]", "******"); 
SMTPServer.Send(mailObj); 

我有我的价值观的名单如下:

List<TimesheetValues> mailBody = new SampleDAO().GetDataForMail(dt1, satDate); 

我怎么能包括与车身和发送该List<>值?

我尝试以下操作:

List<TimesheetValues> Msg = new List<TimesheetValues>(); string strMsg = ""; int n=1; 
      foreach(var item in mailBody) 
      { 
       strMsg = strMsg + "<table><tr><td>" + n + "</td><td>" + item.Project_Name + "</td><td>" + item.Task_Name + "</td><td>" + item.Notes + "</td><td>" + item.Hrs_Worked + "</td></tr></table>";     
       n++; 
      } 
      strMsg = strMsg + "</br>"; 
      MailMessage mailObj = new MailMessage("[email protected]", "[email protected]", "Reg : Timesheet", 
       "Emp Name :" + "Emp1" + Environment.NewLine + "Date From : " + Mon + "Date To : " + Fri);    

      mailObj.Body = "Emp Name : " + "Emp1" + Environment.NewLine + "Date From : " + Date2 + " Date To : " + Date6 + Environment.NewLine + strMsg; 

现在我得到的所有记录,但我已经在记录TR TD标签,且不显示为表。我该如何实现这个目标?

谁能帮助克服这一..提前 谢谢...

回答

0

我尝试用下面这个:

string strMsg = "" 
strMsg = timsheetMail + " <table style=\"border-collapse:collapse; text-align:center;\" border=\"1\"><tr><td> Date </td><td> Working Hours </td><td> Task </td><td>Comments</td></tr>";  

List<TimesheetValues> Msg = new List<TimesheetValues>(); int n=1; 
      foreach(var item in mailBody) 
      { 
timesheetData = new TimesheetDetailModel(); 
       timesheetData.Task_Id = matrix.Task_Id; 
       timesheetData.Hours = matrix.Hours; 
       //timesheetData.Date = matrix.Date.Date; 
       timesheetData.Date = matrix.Date.AddDays(1); 
       timesheetData.EmpId = Convert.ToInt32(Session["EmpId"].ToString()); 
       timesheetData.Notes = matrix.Notes; 

       strMsg = strMsg+ " <tr><td> " + timesheetData.Date.ToString("dd/MM/yyyy") + "</td><td>" + timesheetData.Hours + "</td><td>" + task + "</td><td>" + timesheetData.Notes + "</td></tr>";     
       n++; 
      } 
      strMsg = strMsg + "</table>"; 

它的工作好现在..

0

如果你想读串入一个列表中再次,序列化是更好的。

using Newtonsoft.Json; 
var json = JsonConvert.SerializeObject(yourList); 
mailObj.Body = json; 

您也可以反序列化的另一面:

List<string> g = JsonConvert.DeserializeObject<List<string>>(body); 
相关问题