, поэтому я пытаюсь отправить электронное письмо с информацией, полученной из базы данных. У меня проблема, потому что когда я отправляю электронное письмо, имя столбца не отображается. Также как я могу структурировать электронную почту, чтобы показать, как база данных, название столбца и под ним информация, затем следующий столбец. ниже мой код. как вы можете видеть внизу, я сделал columns.tostring, но не работает. любая помощь приветствуется, отображающий имена столбцов в электронной почте и структуру электронной почты
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Mail;
using System.Net;
namespace sql_connection
{
class Program
{
static void Main(string[] args)
{
string conn = null;
SqlConnection connection;
conn= ("Data Source=database\\SQL2012;Initial Catalog=jobs;User ID=user;Password=passs");
connection = new SqlConnection(conn);
try{
connection.Open();
Console.WriteLine("Connection Open!");
SqlCommand cmd = new SqlCommand("SELECT [jobs].[dbo].[table hours].whd_Date,[jobs].[dbo].[table hours].whd_FromTime,[jobs].[dbo].[table hours].whd_ToTime, [jobs].[dbo].[table hours].whd_User,[jobs].[dbo].[table login].login_Email FROM [jobs].[dbo].[table hours]INNER JOIN [jobs].[dbo].[table login] ON [jobs].[dbo].[table hours].whd_User = [jobs].[dbo].[table login].login_LoginId WHERE DATEDIFF(DAY,[whd_Date],GETDATE())<=7 AND (whd_ToTime = '' OR whd_ToTime IS NULL) AND(whd_User=login_LoginId)");
cmd.Connection = connection;
SqlDataReader reader = cmd.ExecuteReader();
var columns = Enumerable.Range(0, reader.FieldCount).Select(reader,GetName).ToList();
var list = new List<string>();
while(reader.Read())
{
var s = string.Format("{4},{3},{2}, {1}, {0}",
reader["whd_ToTime"] == DBNull.Value? "NULL" : reader["whd_ToTime"].ToString(),
reader["whd_FromTime"] == DBNull.Value? "NULL" : reader ["whd_FromTime"].ToString(),
reader["whd_Date"].ToString(),
reader["whd_User"].ToString(),
reader["login_Email"].ToString());
Console.WriteLine("\t", columns.ToArray()));
Console.WriteLine(s);
list.Add(s);
}
var sb = new StringBuilder();
foreach (var s in list)
{
sb.AppendLine(s);
}
connection.Close();
MailAddress to = new MailAddress("[email protected]");
MailAddress from = new MailAddress("[email protected]");
MailMessage mail = new MailMessage(from, to);
mail.Subject = ("missed punch clock");
mail.Body = sb.ToString(); columns.ToString();
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.Credentials = new NetworkCredential(
"[email protected]", "passworrd");
smtp.EnableSsl = true;
Console.WriteLine("Sending email..");
smtp.Send(mail);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
Лучше всего было бы построить 'HTML table', содержащий данные, которые вы хотите отобразить. Затем это можно установить как тело письма. Просто убедитесь, что для параметра 'IsHtml = true;' –
** columnss.ToString(); ** <- Это ничего не делает. – JWiley
@JeffreyWieder знаете ли вы хорошую ссылку, чтобы научиться делать это, и ishtml isnt работает говорит мне, что не существует в текущем контексте – bobby