Отправка электронной почты на веб-страницу ASP.NET с элементами управления диаграммы - PullRequest
1 голос
/ 22 июля 2011

У меня есть веб-страница asp.net 4.0 с 10 элементами управления графиками.Я отправлял по электронной почте элементы управления диаграммой текущему зарегистрированному пользователю, когда они открывают страницу.Элементы управления диаграммой будут отличаться для каждого пользователя.Я проверял это, пытаясь отправить 1 элемент управления диаграммы, но тело письма не показывает диаграмму только контур изображения.Я пробовал несколько вещей, но не могу заставить его работать.Код, который у меня сейчас есть, -

web.config

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

веб-страница

Защищенный Sub Button1_Click (ByVal отправитель как объект, ByVal и As 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), но оба не работают для меня.

Любой помощник был бы признателен.

1 Ответ

1 голос
/ 22 июля 2011

Вы не прикрепляете изображение к электронному письму.

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