DevTrain .NET Developers Home. Das Community Portal für ASP.NET, Visual Basic, C#
 
  Login Status: Hallo   Anmelden  Suche:  
Navigationslinks überspringen
Startseite
Artikel
Blogs
Foren
ClubClub erweitern

 
Ihre Optionen
Save
Mail
Print
Rate
 
Advertising
  Business Compact vom 24.-25. Februar 2010 im ehem. IMAX München

 
Navigationslinks überspringen
Autor:Hannes Preishuber

Daten aus Website per HTML eMail senden

Oft sieht man in Websites interessanten Text den man evtl einen Kollegen zur Verfügung stellen möchte. Das Ziel ist es also eine HTML Mail zu erzeugen mit einem definierten Ausschnitt aus der Website. Für unser Beispiel stellen wir Daten per Gridview dar und versehen diese noch mit einer Überschrift. Um nur einen Ausschnitt der Website zu versenden wird der relevante Teil innerhalb eines Panel Control platziert.

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="per mail senden" />

<asp:Panel ID="Panel1" runat="server" Height="50px" Width="125px">

Wichtige Daten:<br />

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="CustomerID" EnableViewState="false"

DataSourceID="SqlDataSource1" EmptyDataText="Es sind keine Datens„tze zum Anzeigen vorhanden.">

<Columns>....

Zunächst betrachtet der Benutzer die Website und beim Click auf den Button wird eine Email versendet. Diese muss das Format HTML haben. Hier auf DevTrain gibt es einige Artikel die sich mit den Details der in ASP.NET 2.0 neuen Klasse SMTPClient beschäftigt.

Ich fokusiere mich auf die Methode RenderControl die es erlaubt den HTML Code eines Controls, hier des Panels und Childelemente, zu erzeugen.

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)

Dim SB As New StringBuilder()

Dim SW As New System.IO.StringWriter(SB)

Dim html As New HtmlTextWriter(SW)

Panel1.RenderControl(html)

Dim msg As New System.Net.Mail.MailMessage("from@xxx.de", "to@xxx.de")

msg.IsBodyHtml = True

msg.Body = SB.ToString()

msg.Subject = "Mail von Website"

Dim mymail As New System.Net.Mail.SmtpClient()

mymail.Send(msg)

End Sub

Falls dann ein Fehler auftaucht

Das Steuerelement GridView1 vom Typ GridView muss in einem Formulartag mit runat=server positioniert werden.

muss folgender Code in die Seite eingefügt werden

Public Overrides Sub VerifyRenderingInServerForm(ByVal Ctrl As Control)

End Sub

Das ist sozusagen ein Bugfixing.
Diskutieren Sie in den Foren

Advanced Developers Track vom 24.-25. Februar 2010 im ehem. IMAX München