C# 为收件人使用sql表的动态电子邮件列表
我希望使用一个sql表列作为列表的源,从一个c控制台应用程序发送多封电子邮件 使用以下代码,我得到一个错误System.FormatException:“指定的字符串不是电子邮件地址所需的格式。” 当我将输出发送到控制台时,传递给var m的所有内容都是字符串的第一个字母 我非常接近完成这项工作,因为这看起来像是最后一件作品 谁能给我指一指让它工作的方向吗C# 为收件人使用sql表的动态电子邮件列表,c#,C#,我希望使用一个sql表列作为列表的源,从一个c控制台应用程序发送多封电子邮件 使用以下代码,我得到一个错误System.FormatException:“指定的字符串不是电子邮件地址所需的格式。” 当我将输出发送到控制台时,传递给var m的所有内容都是字符串的第一个字母 我非常接近完成这项工作,因为这看起来像是最后一件作品 谁能给我指一指让它工作的方向吗 con = new SqlConnection("MyConnectionString");
con = new SqlConnection("MyConnectionString");
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT * FROM UserEmails";
cmd.Connection = con;
try
{
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
MailMessage mailMessage = new MailMessage();
//string[] to = { "me@hotmail.com", "me@gmail.com"}; //<-- this works
string to = reader.GetString(1); //<-- this dosent work :(
foreach (var m in to)
{
mailMessage.To.Add(m);
}
mailMessage.Subject = "Hello";
mailMessage.Body = "This is a test email";
mailMessage.From = new MailAddress("me@gmail.com", "me");
SmtpClient smtpMail = new SmtpClient();
smtpMail.Host = "smtp.gmail.com";
smtpMail.Credentials = new NetworkCredential("me@gmail.com", "password");
smtpMail.EnableSsl = true;
try
{
smtpMail.Send(mailMessage);
Console.WriteLine("Message Sent");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message.ToString());
}
}
reader.Close();
}
finally
{
con.Close();
}
您可以遍历to的字符,这是一个字符串 与此相反:
foreach (var m in to)
{
mailMessage.To.Add(m);
}
这样做:
mailMessage.To.Add(new MailAddress(to));
reader.GetString1包含什么?调试器会告诉你什么?@mxmissile,它包含完整的电子邮件地址。当它转到var m时,它变成1个字符。