发送电子邮件时出现指定字符串不符合电子邮件地址格式要求的错误。

5
尝试使用以下代码向多个收件人发送电子邮件时,会出现以下错误:

指定的字符串格式不符合电子邮件地址的要求。

string[] email = {"emailone@gmail.com","emailtow@gmail.com"};
using (MailMessage mm = new MailMessage("teset123321@gmail.com", email.ToString()))
{
     try
     {
          mm.Subject = "sub;
          mm.Body = "msg";
          mm.Body += GetGridviewData(GridView1);
          mm.IsBodyHtml = true;
          SmtpClient smtp = new SmtpClient();
          smtp.Host = "smtpout.server.net";
          smtp.EnableSsl = false;
          NetworkCredential NetworkCred = new NetworkCredential("email", "pass");
          smtp.UseDefaultCredentials = true;
          smtp.Credentials = NetworkCred;
          smtp.Port = 80;
          smtp.Send(mm);
          ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Email sent.');", true);
      }
      catch (Exception ex)
      {
          Response.Write("Could not send the e-mail - error: " + ex.Message);    
      }
}

1
新的NetworkCredential("email@mymail.com", "pass"); - sujith karivelil
在提问之前,请确保您已经通过逐步执行代码并尝试找出问题所在的方式彻底调试了程序。当您发布问题时,请确保您明确指定错误来自哪一行。 - mason
3个回答

6

将您的使用行更改为以下内容:

using (MailMessage mm = new MailMessage())

添加发件地址:

mm.From = new MailAddress("myaddress@gmail.com");

您可以通过循环遍历您的电子邮件地址字符串数组,并像这样逐个添加它们:
string[] email = { "emailone@gmail.com", "emailtwo@gmail.com", "emailthree@gmail.com" };

foreach (string address in email)
{
    mm.To.Add(address);
}

例子:

string[] email = { "emailone@gmail.com", "emailtwo@gmail.com", "emailthree@gmail.com" };

using (MailMessage mm = new MailMessage())
{
    try
    {
        mm.From = new MailAddress("myaddress@gmail.com");

        foreach (string address in email)
        {
            mm.To.Add(address);
        }

        mm.Subject = "sub;
        // Other Properties Here
    }
   catch (Exception ex)
   {
       Response.Write("Could not send the e-mail - error: " + ex.Message);
   }
}

1

目前您的代码:

new NetworkCredential("email", "pass");

"email"视为电子邮件地址,但实际上它不是电子邮件地址,而是包含电子邮件地址的字符串数组。因此,您可以尝试像这样:
foreach (string add in email)
{
    mm.To.Add(new MailAddress(add));
}

0
我在使用SMTP.js时遇到了这个问题,但问题是由于空格引起的,请在处理电子邮件时尝试修剪它。希望这能帮助到某些人。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接