我有一个GSM调制解调器wavecom fastrack m1306b,我还制作了一个示例Windows窗体应用程序来发送SMS,问题是我不知道如何继续使用foreach循环发送SMS,我的数据库中有一个表存储的电话号码,以及对我的数据库类的查询以检索它。
db = new DBConnect();
var eventMessage = db.getEventContents();
string message = String.Join(Environment.NewLine, eventMessage);
if (this.port.IsOpen)
{
List<string> numbers = new List<string>(db.getPhoneNumbers());
foreach (string num in numbers)
{
try
{
sms.sendMsg(this.port, num, message);
i++;
sendingProgress.Value = i * sendingProgress.Maximum / numbers.Count();
MessageBox.Show("Announcement Sent to :" + num);
}
catch (Exception ex)
{
i++;
sendingProgress.Value = i * sendingProgress.Maximum / numbers.Count();
MessageBox.Show("Failed to send announcement to :" + num);
ErrorLog(ex.Message);
}
}
}
下面是我的DBConnect类中的函数:
public IEnumerable<string> getPhoneNumbers()
{
string query = "SELECT contact_no FROM students";
using (var connection = new MySqlConnection(connectionString))
using (var cmd = new MySqlCommand(query, connection))
{
connection.Open();
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
string numbers = (string)reader["contact_no"];
yield return numbers;
}
}
connection.Close();
}
}
public IEnumerable<string> getEventContents()
{
DateTime eventday = new DateTime();
eventday = DateTime.Now;
int day = eventday.Day;
int month = eventday.Month;
string query = "SELECT event_header,event_content FROM events WHERE DAY(date) = '" + day + "' AND MONTH(date)='" + month + "' LIMIT 1";
connection = new MySqlConnection(connectionString);
connection.Open();
using (cmd = new MySqlCommand(query, connection))
{
reader = cmd.ExecuteReader();
while (reader.Read())
{
string eventAnnouncement = (string)reader["event_header"] + "\n\n" + (string)reader["event_content"] + "\n\n";
yield return eventAnnouncement;
}
}
}
我不知道为什么它不会发送,到目前为止,我已经使用CodeProject的示例项目测试了发送短信的过程,并且可以正常工作,我检查了ErrorLog.txt文件,并说没有收到成功消息,有人可以向我指出错误,这将对我有很大的帮助。