注册 登录
编程论坛 ASP.NET技术论坛

如何将即时产生的图片放在邮件内寄送出去?

wube 发布于 2019-06-11 18:48, 3182 次点击
HTML :
程序代码:

<%@ Page Title="研发处" Language="VB" AutoEventWireup="false" CodeFile="WeekReport.aspx.vb" Inherits="SD_PM_WeekReport" %>
<head><title>周报表</title></head>
<body>
    <asp:Label ID="lblDate" runat="server" Width="100%" Font-Size="Large" Font-Bold="true" BackColor="Yellow" ></asp:Label><br />
</body>


ASP.VB :
程序代码:

        lblDate.Text = StartDate & " " & System.DateTime.Parse(StartDate).DayOfWeek.ToString() & "  <===>  " & EndDate & " " & System.DateTime.Parse(EndDate).DayOfWeek.ToString()
        Dim chtTitle1 As New Web.UI.DataVisualization.Charting.Title("本周统计数量")
        Chart1.Titles.Add(chtTitle1)
        Chart1.Width = C_Width
        Chart1.Height = C_Height
        Chart1.BackColor = Drawing.Color.AliceBlue
        Chart1.Series.Add("Series1")
        Chart1.Series("Series1").LabelForeColor = Drawing.Color.Red
        Chart1.Series("Series1").IsValueShownAsLabel = True
        Chart1.Series("Series1")("DrawingStyle") = "Cylinder"
        Chart1.Series("Series1").Points.DataBindXY(xValues1, yValues1)
        Chart1.ChartAreas.Add("ChartArea1")
        Chart1.ChartAreas("ChartArea1").BackColor = Drawing.Color.LightBlue
        Chart1.ChartAreas("ChartArea1").AxisX.IntervalAutoMode = System.Web.UI.DataVisualization.Charting.IntervalAutoMode.VariableCount
        Chart1.ChartAreas("ChartArea1").AxisX.IsLabelAutoFit = False
        Chart1.ChartAreas("ChartArea1").AxisX.LabelStyle.Font = New System.Drawing.Font("Microsoft Sans Serif", 10, Drawing.FontStyle.Bold)
        Chart1.ChartAreas("ChartArea1").AxisX.LabelAutoFitStyle = DataVisualization.Charting.LabelAutoFitStyles.None
        Chart1.ChartAreas("ChartArea1").AxisX.Title = "人名"
        Chart1.ChartAreas("ChartArea1").AxisY.Title = "件数"
        Page.Controls.Add(Chart1)


Client IE HTML :
程序代码:

<html>
<head><title>周报表</title></head>
<body>
<span id="lblDate" style="display:inline-block;background-color:Yellow;font-size:Large;font-weight:bold;width:100%;">2019-06-03 Monday  &lt;===&gt;  2019-06-09 Sunday</span>
<br />
<img id="ctl00" style="height:300px;width:1900px;border-width:0px;" alt="" src="/rdc/sd/pm/ChartImg.axd?i=charts_1/chart_1_12.png&amp;g=cdf76a9cb70945a19045970896e7c284">
</body>
</html>


因为图片是动态及时产生的,要怎么将图片放到邮件中寄出?
2 回复
#2
wube2019-07-01 15:35
WIN10的IE好像拿掉另存网页的功能了,我用Google Chrome另存网页出来,图片都是.axd的格式,
好像只有用小画家才可以开启
#3
wube2019-07-01 15:37
https://blog.

[轉]什麼是WebResource.axd檔??

的原始碼時,常會看到src=WebResource.axd?xxxxxxxxxx這樣的JS或圖片src,研究了一下,原來就是在寫成元件時,需要用到的文件比如js檔、css檔 或圖形,就可以使用這樣的方式內嵌至元件中,使用者不需另外複製這些檔案,這才恍然大悟。

之前寫的一些自訂控制項,總是要使用者自行複製js檔、css檔 或圖形到自己的目錄下,這幾天終於瞭解原來就是利用WebResource.axd來嵌入這些資料,迫不及待的練習寫了一個FreeTextBox延伸「插入程式碼」功能的元件,14個js檔、2個css檔、7個gif檔,使用者只要一個加入一個dll檔就搞定。真是相見恨晚,更有學不完的感覺,之前寫的元件,有空再找時間修正了。

網路上有一篇範例使用在 ASP . NET 2.0 Web 資源值得參考。

補充說明:
1.所有要作為WebResourc的文件,都必須在檔案上按「右鍵」\「屬性」,建置動作項目選「內嵌資源」
2.所有要作為WebResourc的文件,都必須在專案properties \ AssemblyInfo.cs中作定義
如:[assembly: WebResource("命名空間.子資料夾.資源檔名稱", ContentType)]
[assembly: WebResource("FreeTextBoxExtend.images.csharp.gif", "image/gif")]
3.加入text/css link的方式,一樣可以內嵌在元件中,不需像範例中,使用者需另寫Code

 

1    Page page = (Page)HttpContext.Current.Handler;  
2    string[] rsname = new string[] { "TestPages.css", "SyntaxHighlighter.css" };  
3    for (int i = 0; i < rsname.Length; i++)  
4    {  
5      System.Web.UI.HtmlControls.HtmlLink myHtmlLink = new System.Web.UI.HtmlControls.HtmlLink();  
6      myHtmlLink.Href = cs.GetWebResourceUrl(this.GetType(), "FreeTextBoxExtend.Styles." + rsname[i]);//取得在AssemblyInfo中的Resource  
7      myHtmlLink.Attributes.Add("rel", "stylesheet");  
8      myHtmlLink.Attributes.Add("type", "text/css");  
9      page.Header.Controls.Add(myHtmlLink);  
10    }

https://

唯一不同的地方是:axd副檔名的必須要在web.config中的<httpHandlers>中進行註冊,而ashx直接在專案中當成aspx那樣新增使用即可。
所以在專案的新增檔案中,嚮導只有新增ashx檔案的模板,而沒有新增axd檔案的模板。那微軟為什麼這麼無聊搞兩個字尾,全部使用ashx不就行了麼?乾脆利落。原來,如果你的web handler程式碼不在Web的專案中的話,那你就不能使用ashx了,因為如果不在web.config中註冊的話,系統根本不知道要在那個dll庫中才能找到相應的程式碼。
如:
<add verb=”*” path=”OpenSearch.axd” type=”, (名稱空間.類名)Company.Extensions(.dll檔名)” validate=”false”/>
只有註冊了,web才知道OpenSearch.axd原來是在Company.Extensions.dll中,使用類處理。
當然你搞個<add verb=”*” path=”OpenSearch.ashx” type=…. 那也未免不可,習慣規範而已。
  webconfig裡那麼寫的原理是,首先iis會把.axd的檔案handle,然後就交給FreeTextBoxControls.AssemblyResourceHandler,   FreeTextBox這個命名的類來處理而不是讓aspnet去處理。  
  但是你的伺服器提供商可能為了安全起見,把.axd到aspnet_isapi.dll的對映去掉了,所以你在伺服器執行就錯誤了。你現在唯一能做的就是聯絡你的伺服器提供商,讓他們恢復這個對映。  
  副檔名:   .axd  
  執行檔案:C:\WINDOWS\\Framework\v1.1.4322\aspnet_isapi.dll  
  限制為:GET,HEAD,POST,DEBUG  
  指令碼引擎打勾
在伺服器的IIS裡有個預設的對映:就是將*.axd對映到aspnet_isapi.dll上。
1