【发布时间】:2012-02-07 08:11:48
【问题描述】:
我需要通过电子邮件发送查询结果。我使用了两种方法:
GetDataTable() : 执行查询并获取数据表(需要通过电子邮件发送)
SendAutomatedEmail():发送自动电子邮件。
问题:我需要在电子邮件中发送数据表或 html 表,类似于下面的代码。这适用于代替 dataTable 的字符串
public static void Main(string[] args)
{
DataTable datatable = GetDataTable();
SendAutomatedEmail(datatable );
}
public static DataTable GetDataTable(string CommandText)
{
string cnString = ConfigurationManager.ConnectionStrings["Connection2"].ConnectionString;
SqlConnection sqlConnection = new SqlConnection(cnString);
string CommandText = "select * from dbo.fs010100 (nolock)";
SqlCommand sqlCommand = new SqlCommand( CommandText, sqlConnection);
SqlDataAdapter sqlDataAdapter = new System.Data.SqlClient.SqlDataAdapter();
sqlDataAdapter.SelectCommand = sqlCommand;
DataTable dataTable = new DataTable();
dataTable.Locale = System.Globalization.CultureInfo.InvariantCulture;
// Adds or refreshes rows in the DataSet to match those in the data source
try
{
sqlDataAdapter.Fill(dataTable);
sqlConnection.Close(dataTable );
}
catch (Exception _Exception)
{
sqlConnection.Close();
//Console.WriteLine(_Exception.Message);
return null;
}
return dataTable;
}
public static void SendAutomatedEmail(DataTable dt, string recipient = "user@domain.com")
{
try
{
string mailServer = "server.com";
MailMessage message = new MailMessage(
"it@domain.com",
recipient,
"Test Email",
dt.ToString()
);
SmtpClient client = new SmtpClient(mailServer);
var AuthenticationDetails = new NetworkCredential("user@domain.com", "password");
client.Credentials = AuthenticationDetails;
client.Send(message);
}
catch (Exception e)
{
}
}
【问题讨论】:
-
表格必须在邮件正文中吗?
-
是的,email的内容就是表格
-
你可以把建表的原始html写出来,放在邮件正文中,例如:
。但请注意,许多电子邮件客户端都关闭了支持 HTML 的邮件,因此请确保不要破坏用户体验。header 行数据 -
记得设置message.IsBodyHTML=true。
标签: c# .net email data-binding html-email