2011-07-22 13 views
1

私はasp.net 4.0 Webページに10個のチャートコントロールがあります。私は、ページを開いたときに、現在ログインしているユーザーにチャートコントロールを電子メールで送信してきました。チャートコントロールはユーザーごとに異なります。私は1つのチャートコントロールを送信しようと試みてこれをテストしていますが、電子メールのボディはチャートだけをイメージのアウトラインに示していません。私はいくつかのことを試しましたが、うまく動作しません。私は今持っているコードがある -電子メールチャートコントロール付きASP.NET Webページ

web.configファイル

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

ウェブページのサブのButton1 Click保護

(オブジェクトとしてByVal送信者、System.EventArgsとしてByVal e)は

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) 
関連する問題