C# 由于某些原因,无法将类型“string”隐式转换为“int”
此代码用于向access数据库中保存的多个电子邮件地址发送电子邮件,但我在行email=read_email.GetValuei.ToString中遇到问题;无法将类型“string”隐式转换为“int” 任何帮助C# 由于某些原因,无法将类型“string”隐式转换为“int”,c#,email,ms-access,C#,Email,Ms Access,此代码用于向access数据库中保存的多个电子邮件地址发送电子邮件,但我在行email=read_email.GetValuei.ToString中遇到问题;无法将类型“string”隐式转换为“int” 任何帮助 try { ArrayList list_emails = new ArrayList(); int i = 0, email = 0; connection.Open(); //connection to the database. OleDbCom
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);
}
您已将电子邮件初始化为整数:
int i = 0, email = 0;
您正在尝试为其分配字符串值:
email =read_Email.GetValue(i).ToString();
您需要将电子邮件设置为字符串或为其指定整数值 您已将电子邮件初始化为整数:
int i = 0, email = 0;
您正在尝试为其分配字符串值:
email =read_Email.GetValue(i).ToString();
您需要将电子邮件设置为字符串或为其指定整数值 不需要在循环中创建对象,而是使用类似的方法:
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);
}
}
}
}
不需要在循环中创建对象,而是使用类似以下内容:
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);
}
}
}
}
您已将电子邮件声明为int。您正在为其分配字符串。错误会准确地告诉您问题是什么。谢谢字符串email后没有错误消息您已将电子邮件声明为int。您正在为其分配字符串。该错误会准确地告诉您问题所在。感谢您在发送字符串电子邮件后没有错误消息