2015-08-18 262 views
0

我必須通過電子郵件發送包含圖像列的GridViewGridView中顯示的圖像來自數據庫,因此圖像存儲在那裏,而不是存儲在本地文件夾中。如何通過電子郵件發送包含圖像的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"); 
    } 

我能夠把所有的細節在郵件除了圖像。我怎樣才能得到這個工作?

+0

如果我是你,我根本不會使用GridView。相反,我會使用[Razor](https://github.com/Antaris/RazorEngine)創建HTML。對於圖像,您可以嘗試從數據庫中檢索圖像字節,然後將它們作爲基本64編碼字符串添加到「」元素。也就是說,假設您測試以確保電子郵件客戶端支持base64圖像。我不確定他們在做什麼。 – mason

+0

您正在尋找'內嵌附件'。有一個很好的演示[這個SO帖子](http://stackoverflow.com/questions/1212838/c-sharp-sending-mails-with-images-inline-using-smtpclient)。如果我沒有記錯的話,構造函數也會爲圖像接受一個MemoryStream,所以你可以直接將字節數組傳遞給數據庫,但我對這些細節很模糊。 – Equalsk

+0

你有絕對路徑的圖像位置(網址),而不是你的電子郵件中的親戚嗎? – Ricketts

回答

0

當您從文件中獲取圖像時,例如,您的方法是:「〜/ Images /」+。 而不是「〜」使用您當前的網址。 例如「yourdomain.com/Images/」。這個對我有用。

相關問題