Удалить адреса To и BCC с помощью System.Net.Mail

Я обновляю приложение массовой рассылки, чтобы использовать новое пространство имен System.Net.Mail. Я также настраиваю AlternateViews для текстовой и HTML-версий.

В настоящее время я использую DataReader для получения адресов электронной почты из БД и отправки писем. В старом коде я очищал бы свойства To и BCC в конце цикла.

MailMessage mailMessage = new MailMessage();

while (dr.Read())
{
    ....
    mailMessage.To.Add(new MailAddress(dr["EmailAddress"].ToString()));

    if ((bool)dr["SecondaryNotify"])
        mailMessage.Bcc.Add(new MailAddress(dr["SecondaryEmail"].ToString()));

    // Send email
    ...
}

По-видимому, существует метод Remove, который можно вызвать в свойстве To класса MailMessage mailMessage.To.Remove(элемент MailAddress) - я определил это из intellisense. Я проверил MSDN и не могу найти пример такого использования.

Может ли кто-нибудь помочь с синтаксисом для удаления адресов To и BCC для каждой итерации цикла - после того, как каждое электронное письмо было отправлено?

3 ответа

Решение

Перейти с более простым решением. Просто создайте экземпляр MailMessage в цикле while. Тогда вам не нужно ничего удалять.

while (dr.Read())
{
    var mailMessage = new MailMessage();
    ....
    mailMessage.To.Add(new MailAddress(dr["EmailAddress"].ToString()));

    if ((bool)dr["SecondaryNotify"])
        mailMessage.Bcc.Add(new MailAddress(dr["SecondaryEmail"].ToString()));

    // Send email
    ...
}
    var adresse = dr["SecondaryEmail"].ToString();
    int iMessageInArray = mailMessage.To.Count();
    if(iMessageInArray > 0)
    {
        foreach (var mailadress in mailMessage.To)
        {
            if (mailadress.Address == adresse)
            {
                mailMessage.To.Remove(mailadress);
            }
        }
    }

У меня была такая же проблема в одном из моих кодов...

Попробуй это:

MailMessage mailMessage = new MailMessage();

while (dr.Read())
{
//Your code from HERE
    mailMessage.To.Add(new MailAddress(dr["EmailAddress"].ToString()));

    if ((bool)dr["SecondaryNotify"])
        mailMessage.Bcc.Add(new MailAddress(dr["SecondaryEmail"].ToString()));

    // Send email
    ...
    //Then email delete from .To
    int iMessageInArray = mailMessage.To.Count(); //Finds the amount of emails in the array

    if(iMessageInArray > 0)
    {
       for(int i = 0; i < iMessageInArray; i++)
       {
           mailMessage.To.Remove(mailMessage.To[0]); //When one line is removed, the next email comes in index 0 of the array.
        }
    }
}
Другие вопросы по тегам