2011-07-22 77 views
1

我有一个asp.net 4.0网页,其上有10个图表控件。当他们打开页面时,我一直将图表控件通过电子邮件发送给当前登录的用户。图表控件对于每个用户都会有所不同。我一直在试图发送1个图表控件来测试,但电子邮件的主体并不仅仅显示图表的轮廓。我尝试了几件事情,但无法实现它的工作。代码我刚才是 -电子邮件ASP.NET网页与图表控件

的web.config

<add key="ChartImageHandler" value="storage=memory;deleteAfterServicing=true;"/> 

网页

保护小组的button1_Click(BYVAL发件人为对象,BYVALË作为System.EventArgs)把手Button1.Click

SendMail() 

End Sub 

Private Sub SendMail() 

    Dim SB As New StringBuilder() 
    Dim SW As New StringWriter(SB) 
    Dim htmlTW As New HtmlTextWriter(SW) 
    'SB.Append("<td><img src=""cid:chart17""></td>") 
    Chart10.RenderControl(htmlTW) 
    Dim MyHTML As String = SB.ToString() 

    Dim from As String = "EMAIL ADDRESS" 
    Dim recip As String = "EMAIL ADDRESS" 
    'Dim recip As String = Membership.GetUser.Email.ToString 
    Dim subject As String = "Test Email" 




    'Create message object and populate w/ data from form 
    Dim message As System.Net.Mail.MailMessage = New System.Net.Mail.MailMessage() 
    message.From = New System.Net.Mail.MailAddress(from.Trim()) 
    message.To.Add(recip.Trim()) 
    message.Subject = subject.Trim() 
    message.IsBodyHtml = True 
    message.Body = MyHTML 
    'Setup SmtpClient to send email. Uses web.config settings. 
    Dim smtpClient As System.Net.Mail.SmtpClient = New System.Net.Mail.SmtpClient() 

    'Error handling for sending message 
    Try 
     smtpClient.Send(message) 
     'Exception contains information on each failed receipient 
    Catch recExc As System.Net.Mail.SmtpFailedRecipientsException 
     For recipient = 0 To recExc.InnerExceptions.Length - 1 
      Dim statusCode As System.Net.Mail.SmtpStatusCode 
      'Each InnerException is an System.Net.Mail.SmtpFailed RecipientException 
      statusCode = recExc.InnerExceptions(recipient).StatusCode 

      If (statusCode = Net.Mail.SmtpStatusCode.MailboxBusy) Or (statusCode = Net.Mail.SmtpStatusCode.MailboxUnavailable) Then 
       'Log this to event log: recExc.InnerExceptions(recipient).FailedRecipient 
       System.Threading.Thread.Sleep(5000) 
       smtpClient.Send(message) 
      Else 
       'Log error to event log. 
       'recExc.InnerExceptions(recipient).StatusCode or use statusCode 
      End If 

     Next 
     'General SMTP execptions 
    Catch smtpExc As System.Net.Mail.SmtpException 
     'Log error to event log using StatusCode information in 
     'smtpExc.StatusCode 
    Catch ex As Exception 
     'Log error to event log. 
    End Try 

End Sub 

正如你可以看到我已经尝试了一些论坛上的例子,如“SB.Append”和“chart10.rendercontrol(htmlTW),但都不适合我。

任何helpo将是伟大的。

回答

1

您没有将图像附加到电子邮件中。

''I am not sure how to handle memory streams in vb but it should be something like so. 
Dim ms as MemoryStream = new MemoryStream() 
Chart10.SaveImage(ms, ChartImageFormat.Png) 
Dim A As System.Net.Mail.Attachment = New System.Net.Mail.Attachment(ms, "MyChart.png") 
A.ContentId = "chart17" 
A.ContentDisposition.Inline = True 
message.Attachments.Add(A)