#c# #database #windows-forms-designer #ms-access-2016
#c# #База данных #windows-forms-designer #ms-access-2016
Вопрос:
Я создаю приложение Windows form на c #, оно должно иметь возможность отправлять электронные письма всем идентификаторам получателей, которые находятся в таблице в базе данных Access.
Я уже понимаю, как отправлять письма, и даже успешно провел тесты, но я не понимаю, как преобразовать столбец, в котором есть все идентификаторы электронной почты, в строку, разделенную запятыми.
Я также немного смущен, если этот код находится внутри кода forms или где-то еще.
Я уже пробовал использовать циклы foreach, и по какой-то причине у них есть ошибки, говорящие, что я не могу их использовать.
Я также немного прочитал linq, но я не мог понять, где даже реализовать такой код в моей программе.
Вот код для кнопки отправки электронной почты:
private void button1_Click(object sender, EventArgs e)
{
try
{
MailMessage mail = new MailMessage();
SmtpClient smtpserver = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("latinaultimatesite@gmail.com");
mail.To.Add("diomidiov@gmail.com,ninjaboy.abel@gmail.com");
mail.Subject = "Que xopa";
mail.Body = "probando 1 2 3";
smtpserver.Port = 587;
smtpserver.Credentials = new
System.Net.NetworkCredential("latinaultimatesite@gmail.com","proyectofinal69lus");
smtpserver.EnableSsl = true;
smtpserver.Send(mail);
MessageBox.Show("mail Send");
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
На данный момент я добился отправки почты учетным записям, указанным в коде, так что это работает, мне нужно, чтобы учетные записи в базе данных были в формате строки, разделенной запятой, чтобы я мог использовать их в этой кнопке.
Комментарии:
1. перебирайте строки и используйте конкатенацию строк (или конструктор строк) для добавления каждой строки из базы данных вместе с запятой. Убедитесь, что запятая в конце удаляется по завершении цикла.
2. не могли бы вы привести простой пример, чтобы увидеть, как это будет выглядеть?
3. было бы сложно, поскольку вы не указали в предоставленном коде, как вы получили доступ к строкам в столбце. Являются ли они частью a
OledbDataReader
или aDataSet
Также, ваш пример для каждого поможет нам помочь вам лучше.4. Пожалуйста, сформулируйте свой вопрос более четко и сосредоточьтесь на основной проблеме. Вы спрашиваете о проблеме с базой данных в своем заголовке, но ваш вопрос и пример кода в основном касаются отправки электронной почты.
5. Таблица, к которой мне нужен доступ, является частью набора данных, и я прошу прощения за плохой вопрос, я меняю его сейчас.
Ответ №1:
Непонятно, почему вы просто не запрашиваете эту информацию в базе данных. Однако, если у вас уже есть DataTable
then , как указывали другие, вам нужно будет перебрать DataTable.Rows
коллекцию и захватить ячейку адреса электронной почты из этой строки, добавить запятую, затем продолжить это для всех строк в таблице. A StringBuilder
может быть полезно для построения этой строки электронной почты, разделенной запятыми. Это может выглядеть примерно так, как показано ниже…
private string GetEmailAddress(DataTable dt) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < dt.Rows.Count; i ) {
sb.Append(dt.Rows[i]["Email"].ToString());
if (i < dt.Rows.Count - 1)
sb.Append(",");
}
sb.AppendLine();
return sb.ToString();
}
Комментарии:
1. Спасибо за пример, я попробую его реализовать. но пока это ответ.
Ответ №2:
Насколько я понимаю, вы должны попытаться разделить эту строку, а затем добавить каждое электронное письмо, которое я бы отправил в предложение «Кому».
Один пример проиллюстрирован здесь:-
https://www.c-sharpcorner.com/UploadFile/0c1bb2/sending-email-to-multiple-recipeint-using-Asp-Net/
Комментарии:
1. Я думаю, вы неправильно поняли вопрос. Приведенный вами пример не объясняет основную проблему. Как извлечь данные из базы данных и построить список получателей из этих данных.
2. Точно, Стив, это то, что я хочу знать, я не понимаю, как построить список.