я написал ниже программу для отправки HTML Email демонстрационных пользователей в этой таблице:Как перечислить несколько элементов данных из таблицы данных, используя переменную
Я хочу послать только один адрес электронной почты и перечисляет всю информацию для каждого клиента. В настоящее время, если у клиента 10 просроченных книг, клиент получит 10 электронных писем на основе структуры таблицы, потому что каждый книжный кредит является отдельной записью.
Например:
Дорогой Джим Кэри: Следующая книга (s) обусловлены:
- Как исправить Автомобили
- Джеймс Бонд возвращается
ли есть способ, которым я могу отправить только одно электронное письмо для каждого клиента, но перечислить каждый элемент в письме. Например, перечислите все книги?
Пример из Fox: отправив электронное письмо, используя приведенную выше таблицу, Джим Кэри получит 2 письма, а не 1. Я хотел бы отправить только один, но перечислить обе книги.
class Program
{
static DataSet dtProfile = Database.AcquireData();
static DataTable table = dtProfile.Tables[0];
static string CustFName;
static string CustLName;
static string CheckoutDate;
static string DueDate;
static string BookName;
public static void SendEmail()
{
foreach (DataRow row in table.Rows)
{
CustFName = row["CustFName"].ToString();
CustLName = row["CustLName"].ToString();
CheckoutDate = row["CheckoutDate"].ToString();
DueDate = row["DueDate"].ToString();
BookName = row["BookName"].ToString();
string body = PopulateBody(CustFName, CustLName, CheckoutDate, DueDate, BookName);<br />
SendHtmlFormattedEmail("Email", "Subject", body);
}
}
public static string PopulateBody(string custFName, string custLName,
string checkoutDate, string dueDate, string bookName)
{
string body = string.Empty;
using (StreamReader reader =
new StreamReader(Path.GetFullPath(@"Z:\folder\email.html")))
{
body = reader.ReadToEnd();
}
body = body.Replace("{#First Name#}", custFName);
body = body.Replace("{#Last Name#}", custLName);
body = body.Replace("{#Checkout Date#}", checkoutDate);
body = body.Replace("{#Due Date#}", dueDate);
body = body.Replace("{#Book Name#}", bookName);
return body;
}
public static void SendHtmlFormattedEmail(string recepientEmail, string subject, string body)
{
using (MailMessage mailMessage = new MailMessage())
{
mailMessage.From = new MailAddress(ConfigurationManager.AppSettings["UserName"]);
mailMessage.Subject = subject;
mailMessage.Body = body;
mailMessage.IsBodyHtml = true;
mailMessage.To.Add(new MailAddress(recepientEmail));
SmtpClient smtp = new SmtpClient();
smtp.Host = ConfigurationManager.AppSettings["Host"];
smtp.EnableSsl = Convert.ToBoolean(ConfigurationManager.AppSettings["EnableSsl"]);
System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
NetworkCred.UserName = ConfigurationManager.AppSettings["UserName"];
NetworkCred.Password = ConfigurationManager.AppSettings["Password"];
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = int.Parse(ConfigurationManager.AppSettings["Port"]);
smtp.Send(mailMessage);
}
}
static void Main(string[] args)
{
SendEmail();
}
}
В для каждого вместо того, чтобы делать SEND EMAIL Возьмите строку и сохранить сложением список книг. затем позвоните по электронной почте для отправки после того, как вы создали список книг, который у человека есть. – logixologist
Хорошо, глядя на ваш код, который может не работать .... hmm – logixologist