Как изменить кнопку отправить электронную почту, чтобы разрешить отправку выбранных писем из списка?
В настоящее время наше приложение отправляет электронную почту человеку(запрашивающему), выбранному из выпадающего списка. Таким образом, он отправляет только одно электронное письмо одному человеку.
У нас есть новое бизнес-требование, чтобы приложение также отправляло электронную почту более чем одному человеку, когда это необходимо. Владелец проекта не хочет заменять текущий combobox на listbox.
Поэтому меня попросили добавить список в пользовательский интерфейс. Если пользователь хочет отправить электронную почту более чем одному человеку, он выберет человека из выпадающего списка, а также выберет дополнительных людей для отправки электронной почты из списка, нажав кнопку электронная почта.
Кнопка код для электронной почты также должна проверить, выбран ли выбранный человек в списке также выбран в выпадающем списке. Если человек, выбранный в списке, также выбран в выпадающем списке, будет отправлено только одно электронное письмо. Мы не хотим отправлять два письма одному и тому же человеку.
Мне нужна помощь, чтобы изменить код кнопки электронной почты так, чтобы она также отправляла электронную почту или электронные письма человеку или людям, выбранным из списка, если и когда есть выбор.
Как мне это сделать?
Список в основном заполняется той же информацией, что и combobox.
Что я уже пробовал:
Код для списка
public async void PopulateAdditionalStaffEmailListBox() { List<GetRequestorInfoModel> requestors = new List<GetRequestorInfoModel>(); try { requestors = await FTACaseReset.Controllers.RequestorInfoController.GetAllRequestorInfoes(); requestors = requestors.OrderBy(x => x.DisplayName).ToList(); //Has 15 items //Populate AdditionalStaffEmailListBox for (int i = 0; i < requestors.Count; i++) { ListBoxItem requestor = new ListBoxItem(); requestor.Text = requestors[i].DisplayName; requestor.Value = requestors[i].RequestorInfoID; //AdditionalStaffEmailListBox.Items.Add(i); AdditionalStaffEmailListBox.Items.Add(requestor.Text).ToString(); } } catch (Exception ex) { string errorMsg = string.Format("An error has occured in {0}. \nException:\n{1}", "AdditionalStaffEmailListBox()", ex.Message); MessageBox.Show(errorMsg, "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
Код для кнопки электронной почты
private async void SendEmail(int selectedBatch) { #region initialize progress bar EmailProgressBar.Visible = true; EmailProgressBar.Minimum = 0; EmailProgressBar.Maximum = 14; EmailProgressBar.Value = 1; EmailProgressBar.Step = 1; EmailButton.Visible = false; #endregion string message = "The following records have been prepped for processing. Valid cases will be processed.{0}{1}{2}"; string requestorName = string.Empty; string requestorEmail = string.Empty; //AdditionalStaffEmailListBox string AdditionalStaffRequestorEmail = string.Empty; string AdditionalStaffRequestorName = string.Empty; EmailProgressBar.PerformStep(); List<GetCandidateCaseModel> masterCandidateCasesListToDisplay = new List<GetCandidateCaseModel>(); EmailProgressBar.PerformStep(); try { masterCandidateCasesListToDisplay = await Controllers.CandidateCaseController.GetAllCandidates(); masterCandidateCasesListToDisplay = masterCandidateCasesListToDisplay.Where(x => x.BatchNumber == selectedBatch && x.RejectionReason != null).ToList(); EmailProgressBar.PerformStep(); if (masterCandidateCasesListToDisplay.Count > 0) { //code for AdditionalStaffEmailListBox AdditionalStaffRequestorName = masterCandidateCasesListToDisplay[0].RequestorInfo.DisplayName; AdditionalStaffRequestorEmail = masterCandidateCasesListToDisplay[0].RequestorInfo.Email; EmailProgressBar.PerformStep(); requestorName = masterCandidateCasesListToDisplay[0].RequestorInfo.DisplayName; requestorEmail = masterCandidateCasesListToDisplay[0].RequestorInfo.Email; EmailProgressBar.PerformStep(); string validCaseNumbers = "<hr /><br /><h3>VALID:</h3><table>"; List<GetCandidateCaseModel> validCandidateCasesListToDisplay = await Controllers.CandidateCaseController.GetAllCandidates(); validCandidateCasesListToDisplay = masterCandidateCasesListToDisplay.Where(x => x.RejectionReason.RejectionReasonDescription != Enumerations.Rejections.Discarded.ToString() && x.RejectionReason.RejectionReasonDescription != Enumerations.Rejections.No_Records_To_Reset.ToString().Replace("_", " ") && x.RejectionReason.RejectionReasonDescription != Enumerations.Rejections.Invalid_Case_Number.ToString().Replace("_", " ") ).ToList(); EmailProgressBar.PerformStep(); foreach (GetCandidateCaseModel validCandidateCaseListToDisplay in validCandidateCasesListToDisplay) { //Both penalties if ((validCandidateCaseListToDisplay.FirstPenalty.Value) && (validCandidateCaseListToDisplay.SecondPenalty.Value)) validCaseNumbers += "<tr><td>" + validCandidateCaseListToDisplay.CaseNbr.ToString() + "</td><td> </td><td>" + "Both Penalties" + "</td></tr>"; //If FirstPenalty = true display 1st Penalty else if (validCandidateCaseListToDisplay.FirstPenalty.Value) validCaseNumbers += "<tr><td>" + validCandidateCaseListToDisplay.CaseNbr.ToString() + "</td><td> </td><td>" + "1st Penalty" + "</td></tr>"; //2nd Penalty else if (validCandidateCaseListToDisplay.SecondPenalty.Value) validCaseNumbers += "<tr><td>" + validCandidateCaseListToDisplay.CaseNbr.ToString() + "</td><td> </td><td>" + "2nd Penalty" + "</td></tr>"; } validCaseNumbers += "</table>"; EmailProgressBar.PerformStep(); string invalidCaseNumbers = "<hr /><br /><h3>INVALID:</h3><table>"; List<GetCandidateCaseModel> invalidCandidateCasesListToDisplay = await Controllers.CandidateCaseController.GetAllCandidates(); invalidCandidateCasesListToDisplay = masterCandidateCasesListToDisplay.Where(x => x.RejectionReason.RejectionReasonDescription != Enumerations.Rejections.Discarded.ToString() && x.RejectionReason.RejectionReasonDescription != Enumerations.Rejections.Duplicate_Case_Number.ToString().Replace("_", " ") && x.RejectionReason.RejectionReasonDescription != Enumerations.Rejections.Valid.ToString().Replace("_", " ") ).ToList(); EmailProgressBar.PerformStep(); foreach (GetCandidateCaseModel invalidCandidateCaseListToDisplay in invalidCandidateCasesListToDisplay) { invalidCaseNumbers += "<tr><td>" + invalidCandidateCaseListToDisplay.CaseNbr.ToString() + "</td><td> </td><td>" + invalidCandidateCaseListToDisplay.RejectionReason.RejectionReasonDescription + "</td></tr>"; } invalidCaseNumbers += "</table>"; EmailProgressBar.PerformStep(); string discardedCaseNumbers = string.Empty; List<GetCandidateCaseModel> discardedCandidateCasesListToDisplay = await Controllers.CandidateCaseController.GetAllCandidates(); discardedCandidateCasesListToDisplay = masterCandidateCasesListToDisplay.Where(x => x.RejectionReason.RejectionReasonDescription == Enumerations.Rejections.Discarded.ToString()).ToList(); EmailProgressBar.PerformStep(); if (discardedCandidateCasesListToDisplay.Count > 0) discardedCaseNumbers = "<hr /><br /><h3>DISCARDED:</h3>" + string.Join("<br />", discardedCandidateCasesListToDisplay.Select(p => p.CaseNbr.ToString())); message = string.Format(message, validCaseNumbers, invalidCaseNumbers, discardedCaseNumbers); EmailProgressBar.PerformStep(); using (MailMessage mailMessage = new MailMessage()) { mailMessage.From = new MailAddress("NoReply_FTA@courts.state.wt.us"); MailAddress to = new MailAddress(requestorEmail); mailMessage.To.Add(to); string ccEmailAddress = Authentication.GetADEmail(); if (ccEmailAddress.Length > 0) { MailAddress ccto = new MailAddress(ccEmailAddress); mailMessage.CC.Add(ccto); } EmailProgressBar.PerformStep(); mailMessage.Subject = "FTA Case Reset Notice"; mailMessage.Body = message; mailMessage.IsBodyHtml = true; EmailProgressBar.PerformStep(); SmtpClient smtpClient = new SmtpClient(); smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.PickupDirectoryLocation = @"c:\smtp"; smtpClient.EnableSsl = false; smtpClient.UseDefaultCredentials = false; smtpClient.Timeout = 60000; EmailProgressBar.PerformStep(); smtpClient.Send(mailMessage); MessageBox.Show("An email has been sent to " + requestorName, "Email", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else MessageBox.Show("No Requestor was found. Unable to send an email.", "Email", MessageBoxButtons.OK, MessageBoxIcon.Warning); EmailProgressBar.PerformStep(); EmailProgressBar.Visible = false; EmailProgressBar.Value = 0; EmailButton.Visible = true; } catch (Exception ex) { string errorMsg = string.Format("An error has occured in {0}. \nException:\n{1}", "SubmitButton_Click()", ex.Message); MessageBox.Show(errorMsg, "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }