En iyi yanıtlayıcılar
Oluşturulan raporu mail olarak gönderme

Soru
-
Yanıtlar
-
Merhaba
Kodlarınızı bilmediğim için üretebileceğim sınırlı çözümlerin hata vermesi doğal. Aşağıdaki kodu deneyebilirsiniz?
private void mailsend() { var client = new SmtpClient("smtp.gmail.com", 587); client.EnableSsl = true; client.Credentials = new NetworkCredential("**", "***,"); var mail = new MailMessage(); mail.From = new MailAddress("**"); mail.To.Add("**"); mail.IsBodyHtml = true; mail.Subject = "*******"; DataTable dt = new DataTable(); var srg = DB.VW_FATURALARs.Where(s => s.FATURANO == txtFaturaNo.Text); dt=LINQToDataTable(srg); mail.Body = ExportDatatableToHtml(dt); //mail.Body= mailBody; client.Send(mail); }
- Yanıt Olarak İşaretleyen Xajnick 17 Eylül 2017 Pazar 17:51
Tüm Yanıtlar
-
Merhaba
Sanırım Preview ekranına veriler datagridviewden veya veritabanından geliyor. Sonuçta ortak nokta veritabanı. Veritabanından verileri çekerken kullandığın datatable nesnesini aşağıdaki fonksiyona gönderdiğinde html kod yapısında bir text döndürecek. daha sonra dönen texti mail bodysine ekleyerek gönderebilirsin.
protected string ExportDatatableToHtml(DataTable dt) { StringBuilder strHTMLBuilder = new StringBuilder(); strHTMLBuilder.Append("<html >"); strHTMLBuilder.Append("<head>"); strHTMLBuilder.Append("</head>"); strHTMLBuilder.Append("<body>"); strHTMLBuilder.Append("<table border='1px' cellpadding='1' cellspacing='1' bgcolor='lightyellow' style='font-family:Garamond; font-size:smaller'>"); strHTMLBuilder.Append("<tr >"); foreach (DataColumn myColumn in dt.Columns) { strHTMLBuilder.Append("<td >"); strHTMLBuilder.Append(myColumn.ColumnName); strHTMLBuilder.Append("</td>"); } strHTMLBuilder.Append("</tr>"); foreach (DataRow myRow in dt.Rows) { strHTMLBuilder.Append("<tr >"); foreach (DataColumn myColumn in dt.Columns) { strHTMLBuilder.Append("<td >"); strHTMLBuilder.Append(myRow[myColumn.ColumnName].ToString()); strHTMLBuilder.Append("</td>"); } strHTMLBuilder.Append("</tr>"); } //Close tags. strHTMLBuilder.Append("</table>"); strHTMLBuilder.Append("</body>"); strHTMLBuilder.Append("</html>"); string Htmltext = strHTMLBuilder.ToString(); return Htmltext; }
-
Merhaba
Sanırım Preview ekranına veriler datagridviewden veya veritabanından geliyor. Sonuçta ortak nokta veritabanı. Veritabanından verileri çekerken kullandığın datatable nesnesini aşağıdaki fonksiyona gönderdiğinde html kod yapısında bir text döndürecek. daha sonra dönen texti mail bodysine ekleyerek gönderebilirsin.
protected string ExportDatatableToHtml(DataTable dt) { StringBuilder strHTMLBuilder = new StringBuilder(); strHTMLBuilder.Append("<html >"); strHTMLBuilder.Append("<head>"); strHTMLBuilder.Append("</head>"); strHTMLBuilder.Append("<body>"); strHTMLBuilder.Append("<table border='1px' cellpadding='1' cellspacing='1' bgcolor='lightyellow' style='font-family:Garamond; font-size:smaller'>"); strHTMLBuilder.Append("<tr >"); foreach (DataColumn myColumn in dt.Columns) { strHTMLBuilder.Append("<td >"); strHTMLBuilder.Append(myColumn.ColumnName); strHTMLBuilder.Append("</td>"); } strHTMLBuilder.Append("</tr>"); foreach (DataRow myRow in dt.Rows) { strHTMLBuilder.Append("<tr >"); foreach (DataColumn myColumn in dt.Columns) { strHTMLBuilder.Append("<td >"); strHTMLBuilder.Append(myRow[myColumn.ColumnName].ToString()); strHTMLBuilder.Append("</td>"); } strHTMLBuilder.Append("</tr>"); } //Close tags. strHTMLBuilder.Append("</table>"); strHTMLBuilder.Append("</body>"); strHTMLBuilder.Append("</html>"); string Htmltext = strHTMLBuilder.ToString(); return Htmltext; }
-
-
Merhaba
Problemi biraz daha açıklayıcı yazabilir misiniz?
Veritabanından çekerken kullandığım Linqi verdiğiniz fonksiyona ekleyemedim.
Aşağıdaki kodu previewe aktarmak için bunu kullanıyorum ;
var srg = DB.VW_FATURALARs.Where(s => s.FATURANO == txtFaturaNo.Text);
DataSet ds = new DataSet();
ds.Tables.Add(LINQToDataTable(srg));
rprSatisFaturası rpr = new rprSatisFaturası();
rpr.DataSource = ds;
rpr.ShowPreview();SQL'den çekerken Kullandığım kod;
public DataTable LINQToDataTable<T>(IEnumerable<T> Lnqlst)
{
DataTable dt = new DataTable();
PropertyInfo[] columns = null;
if (Lnqlst == null) return dt;
foreach (T Record in Lnqlst)
{
if (columns == null)
{
columns = ((Type)Record.GetType()).GetProperties();
foreach (PropertyInfo GetProperty in columns)
{
Type colType = GetProperty.PropertyType;
if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition()
== typeof(Nullable<>)))
{
colType = colType.GetGenericArguments()[0];
}
dt.Columns.Add(new DataColumn(GetProperty.Name, colType));
}
}
DataRow dr = dt.NewRow();
foreach (PropertyInfo pinfo in columns)
{
dr[pinfo.Name] = pinfo.GetValue(Record, null) == null ? DBNull.Value : pinfo.GetValue
(Record, null);
}
dt.Rows.Add(dr);
}
return dt; -
-
-
-
-
Merhaba kendi yazdığın fonksiyonu kullandığın kodları da atabilir misin? Yani
public DataTable LINQToDataTable<T>(IEnumerable<T> Lnqlst) { DataTable dt = new DataTable(); .... }
fonksiyonunu çağırdığın alan. Yüksek ihtimalle Datatable dt tanımlamasını yanlış yerde yapıyorsun veya hiç yapmıyorsun.
-
Merhaba kendi yazdığın fonksiyonu kullandığın kodları da atabilir misin? Yani
public DataTable LINQToDataTable<T>(IEnumerable<T> Lnqlst) { DataTable dt = new DataTable(); .... }
fonksiyonunu çağırdığın alan. Yüksek ihtimalle Datatable dt tanımlamasını yanlış yerde yapıyorsun veya hiç yapmıyorsun.
public DataTable LINQToDataTable<T>(IEnumerable<T> Lnqlst)
{
DataTable dt = new DataTable();
string Body = ExportDatatableToHtml(dt);
PropertyInfo[] columns = null;Burada çağırıyorum değil mi?
-
-
Merhaba
bu alanda çağırdığınızda datatable boş olduğu için işlem görmeyecektir. fonksiyonun sonunda return dt ile datatable dolu olarak dışa veriliyor. dışa verilen dtyi kullandığın satırdan sonra yazdığım fonksiyonu kullanabilirsin.
DataRow dr = dt.NewRow();
foreach (PropertyInfo pinfo in columns)
{
dr[pinfo.Name] = pinfo.GetValue(Record, null) == null ? DBNull.Value : pinfo.GetValue
(Record, null);
}
dt.Rows.Add(dr);
}
return dt;string Body = ExportDatatableToHtml(dt);
Bu şekilde kullandım. Son sorum mail.body= ....; burada hangi fonksiyonu çağırıcam ?
-
-
merhaba ExportDatatableToHtml fonksiyonunu kullanabilirsiniz.
ExportDatatableToHtml(dt);
private void mailsend() { var client = new SmtpClient("smtp.gmail.com", 587); client.EnableSsl = true; client.Credentials = new NetworkCredential("**", "***,"); var mail = new MailMessage(); mail.From = new MailAddress("**"); mail.To.Add("**"); mail.IsBodyHtml = true; mail.Subject = "*******"; mail.Body = ExportDatatableToHtml(dt); //mail.Body= mailBody; client.Send(mail); }
Bu şekilde yapınca ExportDatatabletoHtml(dt) kısmında aynı hatayı veriyor. Nerede yazmam gerekiyordu? -
Merhaba
aşağıdaki şekilde deneyebilir misin?
private void mailsend() { var client = new SmtpClient("smtp.gmail.com", 587); client.EnableSsl = true; client.Credentials = new NetworkCredential("**", "***,"); var mail = new MailMessage(); mail.From = new MailAddress("**"); mail.To.Add("**"); mail.IsBodyHtml = true; mail.Subject = "*******"; DataTable dt = new DataTable(); dt=LINQToDataTable(srg); mail.Body = ExportDatatableToHtml(dt); //mail.Body= mailBody; client.Send(mail); }
-
Merhaba
aşağıdaki şekilde deneyebilir misin?
private void mailsend() { var client = new SmtpClient("smtp.gmail.com", 587); client.EnableSsl = true; client.Credentials = new NetworkCredential("**", "***,"); var mail = new MailMessage(); mail.From = new MailAddress("**"); mail.To.Add("**"); mail.IsBodyHtml = true; mail.Subject = "*******"; DataTable dt = new DataTable(); dt=LINQToDataTable(srg); mail.Body = ExportDatatableToHtml(dt); //mail.Body= mailBody; client.Send(mail); }
dt = LINQToDataTable(srg);
srg contex hatası veriyor.
-
Merhaba
Kodlarınızı bilmediğim için üretebileceğim sınırlı çözümlerin hata vermesi doğal. Aşağıdaki kodu deneyebilirsiniz?
private void mailsend() { var client = new SmtpClient("smtp.gmail.com", 587); client.EnableSsl = true; client.Credentials = new NetworkCredential("**", "***,"); var mail = new MailMessage(); mail.From = new MailAddress("**"); mail.To.Add("**"); mail.IsBodyHtml = true; mail.Subject = "*******"; DataTable dt = new DataTable(); var srg = DB.VW_FATURALARs.Where(s => s.FATURANO == txtFaturaNo.Text); dt=LINQToDataTable(srg); mail.Body = ExportDatatableToHtml(dt); //mail.Body= mailBody; client.Send(mail); }
- Yanıt Olarak İşaretleyen Xajnick 17 Eylül 2017 Pazar 17:51
-
Merhaba
Kodlarınızı bilmediğim için üretebileceğim sınırlı çözümlerin hata vermesi doğal. Aşağıdaki kodu deneyebilirsiniz?
private void mailsend() { var client = new SmtpClient("smtp.gmail.com", 587); client.EnableSsl = true; client.Credentials = new NetworkCredential("**", "***,"); var mail = new MailMessage(); mail.From = new MailAddress("**"); mail.To.Add("**"); mail.IsBodyHtml = true; mail.Subject = "*******"; DataTable dt = new DataTable(); var srg = DB.VW_FATURALARs.Where(s => s.FATURANO == txtFaturaNo.Text); dt=LINQToDataTable(srg); mail.Body = ExportDatatableToHtml(dt); //mail.Body= mailBody; client.Send(mail); }
var client = new SmtpClient("smtp.gmail.com", 587); client.EnableSsl = true; client.Credentials = new NetworkCredential("****", "***,"); var mail = new MailMessage(); mail.From = new MailAddress("z**m"); mail.To.Add("***"); mail.IsBodyHtml = true; mail.Subject = "*******Sipariş"; DataTable dt = new DataTable(); var srg = DB.VW_FATURALARs.Where(s => s.FATURANO == txtFaturaNo.Text); dt = LINQToDataTable(srg); mail.Body = ExportDatatableToHtml(dt); client.Send(mail);
Bu şekilde oldu. Yardımlarınız için çok teşekkürler. Bu şekilde bir projeyi ilk kez deniyorum. Baya da yordum sizi.