C#从datagridview列获取电子邮件地址,并使用Outlook发送电子邮件
我正在尝试开发一个应用程序(C#WinForms),尝试从datagridview(列地址)获取电子邮件列表,并使用Outlook应用程序向整个列表发送电子邮件。下面是datagridview:C#从datagridview列获取电子邮件地址,并使用Outlook发送电子邮件,c#,winforms,email,datagridview,outlook,C#,Winforms,Email,Datagridview,Outlook,我正在尝试开发一个应用程序(C#WinForms),尝试从datagridview(列地址)获取电子邮件列表,并使用Outlook应用程序向整个列表发送电子邮件。下面是datagridview: ADDRESS NAME ID GROUP mail1@mail.com Josh 0011 Main mail2@mail.com John 0012 Web mail3@mail.com Jeff 0013 Sale
ADDRESS NAME ID GROUP
mail1@mail.com Josh 0011 Main
mail2@mail.com John 0012 Web
mail3@mail.com Jeff 0013 Sale
mail4@mail.com Anna 0014 Lawy
mail5@mail.com Brun 0015 Sale
但我很难从专栏中获得信息,并用它向整个列表发送电子邮件
我尝试的是:
dr = comando.ExecuteReader();
//SQL query to get data from DB suppressed
int nColunas = dr.FieldCount;
string[] linhaDados = new string[nColunas];
while (dr.Read())
{
for (int a = 0; a < nColunas; a++)
{
if (dr.GetFieldType(a).ToString() == "System.Int32")
{
linhaDados[a] = dr.GetInt32(a).ToString();
}
if (dr.GetFieldType(a).ToString() == "System.String")
{
linhaDados[a] = dr.GetString(a).ToString();
}
if (dr.GetFieldType(a).ToString() == "NULL")
{
MessageBox.Show("No data!");
}
}
dataGridView1.Rows.Add(linhaDados);
}
conn.Close();
dr=comando.ExecuteReader();
//从数据库获取数据的SQL查询被抑制
int nColunas=dr.FieldCount;
string[]linhaDados=新字符串[nColunas];
while(dr.Read())
{
对于(int a=0;a
然后检查列(索引0)以收集电子邮件地址并将其字符串化为“数据”:
string[]arrEmail=新字符串[dataGridViewMail.Rows.Count];
对于(int i=0;i”;
int i位置=(int)oMsg.Body.Length+1;
oMsg.Subject=“测试邮件”;
Outlook.Recipients oRecips=(Outlook.Recipients)oMsg.Recipients;
Outlook.Recipient oRecip1=(Outlook.Recipient)oRecips.Add(数据);
oRecip1.Resolve();
oMsg.Send();
oRecip1=null;
oRecips=null;
oRecip1=null;
oMsg=null;
oApp=null;
}
捕获(例外情况除外)
{
Show(例如ToString());
}
但无法发送任何电子邮件。
有什么想法吗
Thnak很多。
收件人。Add
只包含一个电子邮件地址或名称。你需要为每个收件人打电话
或者您可以将MailItem.To
/CC
/BCC
属性设置为“;”
名称或地址的分隔列表。,实际上,从读卡器中填充datagridview时,您可以更轻松地使用名称而不是地址
string[] arrEmail = new string[dataGridViewMail.Rows.Count];
for (int i = 0; i < dataGridViewMail.Rows.Count - 1; i++)
{
arrEmail[i] = dataGridViewMail.Rows[i].Cells[1].Value.ToString();
}
string data = arrEmail.ToString();
try
{
Outlook.Application oApp = new Outlook.Application();
Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
oMsg.HTMLBody = "<b>Dear all, this is an email for test purposes.</br>";
int iPosition = (int)oMsg.Body.Length + 1;
oMsg.Subject = "Test mail";
Outlook.Recipients oRecips = (Outlook.Recipients)oMsg.Recipients;
Outlook.Recipient oRecip1 = (Outlook.Recipient)oRecips.Add(data);
oRecip1.Resolve();
oMsg.Send();
oRecip1 = null;
oRecips = null;
oRecip1 = null;
oMsg = null;
oApp = null;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}