Похоже, что вы извлекаете кучу записей из таблицы MEMBERREQUIREMENTS
, содержащей адрес электронной почты и путь к вложению, и создаете список адресов электронной почты и путей к вложениям.
Затем вы повторяете эту отправку, отправляя электронное письмо для каждой комбинации адреса и вложения.Я предполагаю, что это не то, что вы хотите сделать.Я полагаю, что либо:
- каждый получатель должен получать только вложение, указанное в его записи.В этом случае вы не хотите перебирать вложения для каждого адреса, или, возможно,
- каждый получатель должен получать каждое вложение, но вложения должны быть перечислены в отдельной таблице и не сохраняться в записи длякаждый адрес в вашей таблице
MEMBERREQUIREMENTS
.
ОБНОВЛЕНИЕ:
Ниже приведен код для выполнения первого.Обратите внимание, что это всего лишь минимальное редактирование вашего опубликованного кода, и оно не исправляет имена переменных и т. Д. И не обеспечивает дополнительную проверку ошибок (что вы, вероятно, захотите сделать):
private static readonly Logger log = new _EventLogger();
private void btnSend_Click(object sender, EventArgs e)
{
conn.Open();
SqlCommand cmdgetEmail = new SqlCommand("Select EMAIL, PATH from MEMBERREQUIREMENTS WHERE STATUS=0", conn);
SqlDataReader getEmail = cmdgetEmail.ExecuteReader();
while (getEmail.Read())
{
email = getEmail.GetString(0);
attachment = getEmail.GetString(1);
this.sendMail(email, attachment)
}
getEmail.Close();
conn.Close();
}
private void sendMail(string sendTo, string sendAttachments)
{
MailMessage mail = new MailMessage();
mail.To.Add(sendTo);
mail.From = new MailAddress(from, "Company Name'", Encoding.UTF8);
mail.Subject = subject;
mail.Body = msgBodyHead + msgBodyHead2 + msgDate + msgGreet + msgBody + msgAdobe + msgAssistance + msgCompliment + msgfooter;
mail.IsBodyHtml = true;
mail.Priority = MailPriority.High;
mail.Attachments.Add(new Attachment(sendAttachments));
SmtpClient client = new SmtpClient();
client.Credentials = new System.Net.NetworkCredential(from, "password");
client.Host = "192.167.89.0";
client.EnableSsl = false;
try
{
progress();
client.Send(mail);
}
catch (Exception ex)
{
ProgressBar1.Visible = false;
timer1.Enabled = false;
Exception excpt = ex;
string errorMessage = string.Empty;
while (excpt != null)
{
errorMessage += excpt.ToString(); excpt = excpt.InnerException;
log.Error("Email - LMS Application Error", ex);
lblError.Text = "There was an error occured while processing your request.\n Please see Event Viewer for more details.";
lblError.ForeColor = System.Drawing.Color.Red;
}
}
}