c# - 使用 sql 表作为收件人的动态电子邮件列表
问题描述
我希望使用 sql 表列作为我列表的来源,从 ac# 控制台应用程序发送多封电子邮件。
使用以下代码,我收到错误“System.FormatException:'指定的字符串不是电子邮件地址所需的形式。'”
当我将输出发送到控制台时,传递给 var m 的所有内容都是字符串的第一个字母。
我非常接近完成这项工作,因为这看起来像是最后一件。
任何人都可以为我指明方向以使其发挥作用。
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));
推荐阅读
- javascript - 如何在 v-for vue js 中创建增量变量
- r - 在 RStudio 中加载 Tidyverse 的问题
- api - 为不同的管道(:api和:browser)呈现不同的错误?
- vue.js - Vue Props 值未在简单测试中通过
- c - 为什么最后一个索引的节点在使用 igraph 生成的随机网络中没有过度代表?
- rest - 如何形成nexus 3的搜索网址
- javascript - 在 Chart.js 中使用数组作为数据
- r - 单列的 3D 带状图
- c# - SerialPort.Write() 方法挂起
- ios - Swift UIView 约束恒定高度更改时间获取 LayoutConstraints 警告