开发者

Email ASP.NET webpage with Chart Controls

开发者 https://www.devze.com 2023-03-22 20:01 出处:网络
I have an asp.net 4.0 webpage which has 10 chart controls on it. I have been to email the chart controls to the current logged in user when they open the page. The chart controls will be different for

I have an asp.net 4.0 webpage which has 10 chart controls on it. I have been to email the chart controls to the current logged in user when they open the page. The chart controls will be different for each user. I have been testing this by trying to send 1 chart control but the body of the email doesnt show the chart only the image outline. I have tried several things but cant get it to work. The code i have just now is -

web.config

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

webpage

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles 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
开发者_如何学Python        'Log error to event log using StatusCode information in
        'smtpExc.StatusCode
    Catch ex As Exception
        'Log error to event log.
    End Try

End Sub

As you can see i have tried some examples on forums like "SB.Append" and "chart10.rendercontrol(htmlTW) but both do not work for me.

Any helpo would be greatful.


You are not attaching the image to the e-mail.

''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)
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号