Bericht in Email Body anzeigen lassen?
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von carwashbuxtehude.
-
-
carwashbuxtehude schrieb:
Ist es möglich, einen Bericht zu erstellen und den dann in einer Mail im Body zu versenden?
Ja, ist möglich.
Gibst Du mehr Infos, bekommst Du mehr Infos.
VG,
Bruno -
Danke.
Ich möchte gerne einen Report als Email versenden.
Momentan versende ich im Body den Inhalt eines DGV im Email Body.
Nun möchte ich aber Summen und ein besseres Aussehen hinbekommen und dieses direkt in der Email darstellen, also ohne Anhang den ich öffnen muss, sondern direkt in die MAil.
Matthias -
There is no CLOUD - just other people's computers
Q: Why do JAVA developers wear glasses?
A: Because they can't C#
Daily prayer:
"Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP." -
-
carwashbuxtehude schrieb:
Deshalb war meine Idee, einen Bericht zu erstellen der optisch besser aussieht
Nee nee - mit HTML hast Du schon in der Mail die perfekten Gestaltungsmöglichkeiten inkl. CSS!
Ich könnte Dir eine sehr umfangreiche, tabellarische Mail mit allem Schnackens zeigen, die ich jeden Tag verschicke - darf ich nur leider nicht.
Aber es ist wirklich möglich.
Du musst halt Deine Daten vorher aufarbeiten und solltest dann natürlich auch ein bisschen den Webdesigner aus Dir herauslassen - sofern vorhanden.
Aber wie gesagt, ohne ganz viel Input von Dir, gibts halt nur oberflächliche Antworten - sorry.
VG,
Bruno -
OK!
Also alles so lassen und nur verschönen?
Also ich habe ein DGV mit den benötigten Daten für den Inhalt der Mail. (Siehe Anhang)
So versende ich den Inhalt des DGV:
VB.NET-Quellcode
- Try
- Msg.IsBodyHtml = True ' Im HTML-Format erstellen
- Msg.From = New MailAddress("") ' Von
- Msg.To.Add("") ' An
- Msg.Subject = "Test am: " & Date.Now.ToString ' Betreff
- ' Aus den DataGridView-Zeilen und Spalten eine HTML-Tabelle erstellen
- Msg.Body = TabelleStart & vbCrLf
- Zeile = "<TR>"
- For Each S As DataGridViewColumn In DataGridView1.Columns ' Die Spaltenüberschriften auslesen
- Zeile = Zeile & "<TH>" & S.HeaderText & "</TH>"
- Next
- Zeile = Zeile & "</TR>" & vbCrLf
- Msg.Body = Msg.Body & Zeile
- For Each Z As DataGridViewRow In DataGridView1.Rows ' Für jede Zeile ...
- Zeile = "<TR>"
- For I As Integer = 0 To DataGridView1.ColumnCount - 1 ' ... die einzelnen Felder auslesen
- Zeile = Zeile & ZelleStart & Z.Cells(I).Value & ZelleEnde
- Next
- Zeile = Zeile & "</TR>" & vbCrLf
- Msg.Body = Msg.Body & Zeile
- Next
- Msg.Body = Msg.Body & TabelleEnde
- 'MessageBox.Show(Msg.Body, Date.Now.ToString)
- PostausgangsServer.Send(Msg) ' Nachricht verschicken
- MessageBox.Show("E-Mail erfolgreich versandt.", "Information", _
- MessageBoxButtons.OK, MessageBoxIcon.Information)
- Catch ex As Exception
- MessageBox.Show(Err.Number & ex.Message & ex.StackTrace.ToString) ' Falls ein Fehler auftritt
- End Try
- End Sub
Wie schon gesagt sieht es nicht gerade gut aus, da dort die Einheiten und Summen fehlen! -
carwashbuxtehude schrieb:
Wie schon gesagt sieht es nicht gerade gut aus, da dort die Einheiten und Summen fehlen!
Das Beste wird sein, Du schaust Dir zuerst einmal die korrekte Konstruktion einer HTML-Seite an.
Genug Beispiele findet Du im Internet.
Und dann setzt Du natürlich den entsprechenden DOCTYPE.
Dann klappts auch mit den Einheiten.
VG,
Bruno -
-
-
-
carwashbuxtehude schrieb:
Kann man das Formular als eine Art Screenshot im Email Body versenden?
Hier war doch gerade eben so ein Fall: LINK
Und wenn Du die SMTP-Methode zum Versenden mit Bild brauchst, schreib einfach.
Habe sie aber nur in C# da.
LG,
Bruno -
-
Genau das was ich gesucht habe.
Dankeschön!
Jetzt erstelle ich einen Screenshot und speichere ihn auch.
Versenden der Mail ist auch kein Problem.
Wie gehe ich es jetzt an und bekomme den Pfad mit hinein?
Matthias -
carwashbuxtehude schrieb:
Wie gehe ich es jetzt an und bekomme den Pfad mit hinein?
Naja, ganz so funktioniert das nicht.
Wenn man ein Bild in eine HTML-Mail einbetten will, geschieht dies über eine BASE64 Encodierung.
Soll ich Dir mal ein Beispiel fertig machen?
Könnte aber ein bisschen dauern, da ich es wie gesagt in diversen C# Projekten benutze.
LG,
Bruno -
-
-
-
carwashbuxtehude schrieb:
DANKESCHÖN für die Unterstützung!
Jo - gern.
Habe trotzdem mal die Methode in VB.NET übersetzt (so leidlich ).
So ähnlich sollte es bei Dir auch aussehen, nehme ich an?
Spoiler anzeigen
VB.NET-Quellcode
- ''' <summary>
- ''' Sendet eine HTML-Mail mit eingebettetem Bild
- ''' </summary>
- ''' <param name="MailSender">Absender</param>
- ''' <param name="Recipient">Empfänger</param>
- ''' <param name="MailSubject">Betreff</param>
- ''' <param name="MailMessage">Mail-Text</param>
- ''' <param name="AttachImage">Bild als Stream</param>
- ''' <returns>gesendet/nicht gesendet</returns>
- ''' <remarks></remarks>
- Public Shared Function SendMail(MailSender As String, Recipient As String, MailSubject As String, MailMessage As String, AttachImage As Stream) As Boolean
- ' IP-Adresse des SMTP-Servers eintragen
- Dim mailClient As New SmtpClient("0.0.0.0")
- Dim msg As New MailMessage(MailSender, Recipient)
- msg.IsBodyHtml = True
- msg.Subject = MailSubject
- msg.Priority = MailPriority.Normal
- Dim A As New Attachment(AttachImage, "ScreenShot.png")
- Dim RGen As New Random()
- A.ContentId = RGen.[Next](100000, 9999999).ToString()
- msg.Attachments.Add(A)
- Dim sb As New StringBuilder()
- sb.Append("<!DOCTYPE HTML PUBLIC ""-/W3C/DTD HTML 4.01 Transitional/EN"" ""http://www.w3.org/TR/html4/loose.dtd"">")
- sb.Append("<html>")
- sb.Append("<head>")
- sb.Append("<meta http-equiv=""Content-Type"" content=""text/html; charset=iso-8859-1"">")
- sb.Append("<title>Test</title>")
- sb.Append("</head>")
- sb.Append("<body>")
- sb.Append("<p>")
- sb.Append(MailMessage.Replace(vbLf, "<br>"))
- sb.Append("<p>")
- sb.Append("<img src=""cid:")
- sb.Append(A.ContentId)
- sb.Append(""">")
- sb.Append("</body>")
- sb.Append("</html>")
- msg.Body = sb.ToString()
- Try
- mailClient.Send(msg)
- Return True
- Catch
- Return False
- End Try
- End Function
LG,
Bruno -
Super!
Ist es so auch ok?
Oder habe ich etwas übersehen?
VB.NET-Quellcode
- Private Sub sendEmail()
- Try
- Dim mail As New MailMessage()
- Dim strMsg As String = Nothing
- Dim img1 As LinkedResource = New LinkedResource("c:\carwash\test.png", MediaTypeNames.Image.Jpeg)
- Dim img2 As LinkedResource = New LinkedResource("c:\carwash\test2.png", MediaTypeNames.Image.Jpeg)
- img1.ContentId = "Image1"
- img2.ContentId = "Image2"
- mail.From = New MailAddress("xxxxxxxx", "C")
- mail.CC.Add("xxxxxxxxx")
- mail.Subject = "Test am: " & Date.Now.ToString ' Betreff
- strMsg = ""
- strMsg = strMsg & "<html><body><p></p>"
- strMsg = strMsg & "<table width='70%' border='0'>"
- strMsg = strMsg & "<tr>"
- strMsg = strMsg & "<td><h2><center><span style='color:#1C8DFF'>Umsatzdaten</span></center></h2></td>"
- strMsg = strMsg & "</tr>"
- strMsg = strMsg & "<tr>"
- strMsg = strMsg & "<td> </td>"
- strMsg = strMsg & "</tr>"
- strMsg = strMsg & "<tr>"
- strMsg = strMsg & "<td><img src=cid:Image1></td>"
- strMsg = strMsg & "</tr>"
- strMsg = strMsg & "<tr>"
- strMsg = strMsg & "<td><img src=cid:Image2></td>"
- strMsg = strMsg & "</tr>"
- strMsg = strMsg & "</table></body></html>"
- Dim av1 As AlternateView = AlternateView.CreateAlternateViewFromString(strMsg, Nothing, MediaTypeNames.Text.Html)
- av1.LinkedResources.Add(img1)
- av1.LinkedResources.Add(img2)
- mail.AlternateViews.Add(av1)
- mail.IsBodyHtml = True
- Dim smtp As SmtpClient = New SmtpClient()
- Dim MeineZugangsdaten As New System.Net.NetworkCredential
- Dim PostausgangsServer As New SmtpClient()
- MeineZugangsdaten.UserName = "xxxxxxx" ' Email Adresse des Absenders
- MeineZugangsdaten.Password = "cxxxx" ' Passwort des Absenders
- PostausgangsServer.Host = "xxxxxxxxx" ' PostausgangsServer bei
- PostausgangsServer.Port = 25
- PostausgangsServer.UseDefaultCredentials = False ' Keine Standard-Zugangsdaten
- PostausgangsServer.Credentials = MeineZugangsdaten ' Zugangsdaten setzen
- PostausgangsServer.Send(mail) ' Nachricht verschicke
- MessageBox.Show("E-Mail erfolgreich versandt.", "Information", _
- MessageBoxButtons.OK, MessageBoxIcon.Information)
- Catch ex As Exception
- MessageBox.Show(Err.Number & ex.Message & ex.StackTrace.ToString) ' Falls ein Fehler auftritt
- End Try
- End Sub
-
Ähnliche Themen
-
queckjunior - - Daten(bank)programmierung
-
2 Benutzer haben hier geschrieben
- Gast (23)
- Schamash (1)