0
我必須通過電子郵件發送包含圖像列的GridView
。 GridView
中顯示的圖像來自數據庫,因此圖像存儲在那裏,而不是存儲在本地文件夾中。如何通過電子郵件發送包含圖像的gridview
這裏是我的代碼:
public void SendHTMLMail()
{
MailMessage Msg = new MailMessage();
lblcomfirmationmail.Text = Session["Useremail"].ToString();
Msg.From = new MailAddress(lblcomfirmationmail.Text);
Msg.To.Add(lblcomfirmationmail.Text);
Msg.Subject = "Your Order Details";
Msg.Body += "Please check below data <br/><br/>";
Msg.Body += GetGridviewData(Gridorderconfirmation);
Msg.IsBodyHtml = true;
Msg.BodyEncoding = Encoding.UTF8;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.Credentials = new System.Net.NetworkCredential("ve[email protected]", "");
smtp.EnableSsl = true;
smtp.Send(Msg);
}
public string GetGridviewData(GridView gv)
{
StringBuilder strBuilder = new StringBuilder();
StringWriter strWriter = new StringWriter(strBuilder);
HtmlTextWriter htw = new HtmlTextWriter(strWriter);
gv.RenderControl(htw);
return strBuilder.ToString();
}
public override void VerifyRenderingInServerForm(Control control)
{
}
protected void Payimgbtn_Click(object sender, ImageClickEventArgs e)
{
SendHTMLMail();
Response.Redirect("~/Payment.aspx");
}
我能夠把所有的細節在郵件除了圖像。我怎樣才能得到這個工作?
如果我是你,我根本不會使用GridView。相反,我會使用[Razor](https://github.com/Antaris/RazorEngine)創建HTML。對於圖像,您可以嘗試從數據庫中檢索圖像字節,然後將它們作爲基本64編碼字符串添加到「
」元素。也就是說,假設您測試以確保電子郵件客戶端支持base64圖像。我不確定他們在做什麼。 –
mason
您正在尋找'內嵌附件'。有一個很好的演示[這個SO帖子](http://stackoverflow.com/questions/1212838/c-sharp-sending-mails-with-images-inline-using-smtpclient)。如果我沒有記錯的話,構造函數也會爲圖像接受一個MemoryStream,所以你可以直接將字節數組傳遞給數據庫,但我對這些細節很模糊。 – Equalsk
你有絕對路徑的圖像位置(網址),而不是你的電子郵件中的親戚嗎? – Ricketts