Ошибка в mail.Bcc.Add() ASP .Net C#

То, что я пытаюсь достичь в своем коде ниже, это отправить электронное письмо для каждого адреса электронной почты, который можно найти в моей базе данных. Моя проблема в том, что когда я нажимаю кнопку отправки, появляется сообщение об ошибке "The specified string is not in the form required for an e-mail address." на mail.Bcc.Add(MyVar.Text) линия.

private void sendmail()
    {
        Label MyVar = new Label();
        foreach (DataRowView UserEmail in SelectUserProfile.Select(DataSourceSelectArguments.Empty))
        {
            MyVar.Text = "";
            MyVar.Text += UserEmail["EMAIL"].ToString() + "; ";
        }

        //This line takes the last ; off of the end of the string of email addresses
        MyVar.Text += MyVar.Text.Substring(0, (MyVar.Text.Length - 2));

        MailMessage mail = new MailMessage();

        mail.Bcc.Add(MyVar.Text);
        mail.From = new MailAddress("syntaxbugerror@gmail.com");
        mail.Subject = "New Member Application";
        mail.Body = "Good day, in this e-mail you can find a word document attached in which it contains new membership application details.";
        mail.IsBodyHtml = true;
        SmtpClient smtp = new SmtpClient();
        smtp.Host = "smtp.gmail.com";
        smtp.Credentials = new System.Net.NetworkCredential("myusername@gmail.com", "mypassword");
        smtp.EnableSsl = true;
        smtp.Send(mail);
    }

Эрни

2 ответа

Решение

Почему вы издеваетесь над строкой адресов электронной почты BCC?

Bcc это коллекция, так что просто относитесь к ней как к таковой. Я не совсем уверен, что вы делаете с лейблом или почему, так что просто игнорируя это сейчас, что-то вроде этого должно работать

MailMessage mail = new MailMessage();

foreach (DataRowView UserEmail in SelectUserProfile.Select(DataSourceSelectArguments.Empty))
{
   MyVar.Text = "";
   MyVar.Text += UserEmail["EMAIL"].ToString() + "; ";

   try
   {
       mail.Bcc.Add(UserEmail["EMAIL"].ToString());
   }
   catch(FormatException fe)
   {
      // Do something with the invalid email address error.
    }
}

Ваш логический поток не имеет смысла. Вы анализируете вместе электронные письма, а затем пытаетесь разобрать свои адреса электронной почты с помощью некоторой некорректной логики. Вместо этого создайте свое почтовое сообщение, а затем переберите свои адреса электронной почты, добавив каждый из них в BCC.

// Create Message (...)
foreach(...)
{
   mail.Bcc.Add(UserEmail["EMAIL"].ToString()); 
}
// Finalize and send (...)
Другие вопросы по тегам