Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#从datagridview列获取电子邮件地址,并使用Outlook发送电子邮件_C#_Winforms_Email_Datagridview_Outlook - Fatal编程技术网

C#从datagridview列获取电子邮件地址,并使用Outlook发送电子邮件

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

我正在尝试开发一个应用程序(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
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());
                        }