如何从c#中的sendEmail函数中排除或删除特定的电子邮件地址



我正试图从CC电子邮件地址列表中删除或排除几个特定的电子邮件地址。我该怎么做?以下是功能:

private void SendEmail(string emailTo, string subject, string body)
{
using (SmtpClient client = new SmtpClient(System.Configuration.ConfigurationManager.AppSettings["SmtpServerAddress"]))
{
MailMessage email = new MailMessage();
email.From = new MailAddress(GetUserEmail());
string emailCc = ConfigurationManager.AppSettings["EmailCc"];
foreach (var item in emailTo.Split(';'))
{
email.To.Add(new MailAddress(item.Trim()));
}
foreach (var item in emailCc.Split(';'))
{
email.CC.Add(new MailAddress(item.Trim()));
}
email.Subject = subject;
email.IsBodyHtml = true;
email.Body = body;
return;
}
}

您将不想要的电子邮件放入一个数组:

var badEmails = new [] { "a@a.aa", "b@b.bb" }

然后使用LINQ将它们从拆分中删除:

var ccList = emailCc.Split(';').Where(cc => !badEmails.Any(b => cc.IndexOf(b, System.StringComparison.InvariantCultureIgnoreCase) > -1));

然后你将ccList中的内容添加到你的电子邮件中

如果你知道电子邮件:,你可以试试这个

foreach (var item in emailCc.Split(';'))
{
if (!new string[] { "bad@gmail.com", "uncle@sam.com", "stack@overflow.com"}.Contains(email))
{
email.CC.Add(new MailAddress(item.Trim()));
}

}

如果您想排除某些具有特定模式的电子邮件,则可以使用正则表达式来代替if语句。

最新更新