不能隐式转换类型'字符串'到' int'由于某些原因

时间:2014-09-06 01:21:22

标签: c# email ms-access

此代码将电子邮件发送到保存在访问数据库中的多个电子邮件地址,但我遇到问题(email =read_Email.GetValue(i).ToString();)无法隐式将类型'string'转换为'int'

任何帮助。

try
{
    ArrayList list_emails = new ArrayList();
    int i = 0, email = 0;
    connection.Open(); //connection to the database.
    OleDbCommand cmd_Email = new OleDbCommand("Select Email from Email_Table", connection);
    OleDbDataReader read_Email = cmd_Email.ExecuteReader();
    while (read_Email.Read())
    {
        email =read_Email.GetValue(i).ToString();
        list_emails.Add(email); //Add email to a arraylist
        i = i + 1 - 1; //increment or ++i
    }
    read_Email.Close();
    connection.Close(); //Close connection

    foreach (string email_to in list_emails)
    {
        MailMessage mail = new MailMessage();
        mail.To.Add(email_to);
        mail.Subject = label2.Text + "   station  " + label1.Text;
        mail.From = new MailAddress("amrghonem20@gmail.com");
        mail.Body = "Test";
        SmtpClient smtp = new SmtpClient("smtp.gmail.com");
        smtp.Send(mail);
    }
}
catch (Exception ex)
{
    MessageBox.Show("Error: " + ex.Message);
}

2 个答案:

答案 0 :(得分:5)

您的电子邮件已初始化为整数:

int i = 0, email = 0;

并且您尝试为其分配字符串值:

email =read_Email.GetValue(i).ToString();

您需要将email设为字符串或为其指定整数值。

答案 1 :(得分:0)

不需要在循环中创建对象,而是使用类似的东西:

namespace ConsoleApplication3
{
    using System;
    using System.Collections.Generic;
    using System.Data.OleDb;
    using System.Linq;
    using System.Net.Mail;

    public class Program
    {
        public static void Main()
        {
            try
            {
                List<string> emails = new List<string>();

                int i = 0, email = 0;
                connection.Open(); //connection to the database.
                OleDbCommand cmd_Email = new OleDbCommand("Select Email from Email_Table", connection);
                OleDbDataReader read_Email = cmd_Email.ExecuteReader();
                if (read_Email.HasRows)
        {
                while (read_Email.Read())
                {
                    email = read_Email.GetString(0).FirstOrDefault();
                    emails.Add(email);
                }
                read_Email.Close();
                connection.Close(); //Close connection
                MailMessage message = new MailMessage() { 
                    Subject = label2.Text + "   station  " + label1.Text, 
                   From = new MailAddress("amrghonem20@gmail.com"),
                    Body = "Test"; 
            };

            SmtpClient smtp = new SmtpClient("smtp.gmail.com");
                emails.ForEach(to =>
                {
                    message.To.Clear();
                    message.To.Add(to);
                    smtp.Send(message);
                });
            }
}
            catch (Exception ex)
            {
                MessageBox.Show("Error: " + ex.Message);
            }
        }
    }
}