Richtextbox in Outlook body einfügen

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von simpelSoft.

    Richtextbox in Outlook body einfügen

    Hallo

    mein Problem ist.

    Ich habe eine RichtTextBox in der ich eine RTF datei öffne.

    Diese RTF Datei beinhaltet Tabellen Bilder und Texte in verschiedene Schriftarten und größen

    nun möchte ich es in Outlook body übertragen.

    hier mein Code

    VB.NET-Quellcode

    1. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles B_Senden.Click
    2. 'diese 2 Zeilen sind nur zum Text
    3. RichTextBox1.SelectAll()
    4. RichTextBox1.Copy()
    5. Dim NSpace As Microsoft.Office.Interop.Outlook.NameSpace
    6. Dim Folder As Microsoft.Office.Interop.Outlook.MAPIFolder
    7. Dim outApp As Microsoft.Office.Interop.Outlook.Application
    8. outApp = New Microsoft.Office.Interop.Outlook.Application
    9. NSpace = outApp.GetNamespace("MAPI")
    10. Folder = NSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderSentMail)
    11. EItem = Folder.Items.Add(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem)
    12. EItem.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatRichText
    13. EItem.To = txt_an.Text
    14. EItem.Subject = txt_betreff.Text
    15. EItem.Body = RichTextBox1.Text
    16. EItem.Display(False)
    17. End Sub


    in Outlook werden nur die Texte ohne Schriftart und Größe übertragen es werden auch keine Tabellen und Bilder übertragen

    zum Testen haben ich mal die Zeile eingefügt RichTextBox1.Copy() wenn ich jetzt in Outlook auf einfügen mache werden die Inhalt komplett eingefügt mit Tabelle, Bilder und Text mit die Schriftarten.

    wie kann ich es in EItem.Body komplett übertragen mit Tabelle, Bilder und Text?
    Moin,

    RichTextBox.Text ist der reine, unformatierte Text. Mit ​RichTextBox.Rtf kannst du auf den RTF-Code zugreifen. Versuche z. B. mal den RTF-Code in ​EItem.Body reinzuladen.
    Mit freundlichen Grüßen,
    Thunderbolt

    Matthias_80 schrieb:

    so ein komische Code
    Kannst Du da mal ein Bild von posten?
    Welche Formatierung erwartet Body? Probier mal HTML-Format.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hier mal ein Teil von dem Komischen Code

    Quellcode

    1. ​{\rtf1\fbidis\ansi\ansicpg1252\deff0\deflang1031\deflangfe1031\deftab708{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}{\f1\fnil\fcharset0 Microsoft Sans Serif;}{\f2\fnil\fprq2\fcharset0 012-Fellowmaiden;}{\f3\fscript\fprq2\fcharset0 Forte;}{\f4\fnil\fprq2\fcharset0 AR BLANCA;}}{\colortbl ;\red49\green132\blue155;}\viewkind4\uc1\trowd\trgaph108\trleft-108\trbrdrt\brdrs\brdrw20 \trbrdrb\brdrs\brdrw20 \clbrdrt\brdrw15\brdrs\clbrdrb\brdrw15\brdrs \cellx2749\clbrdrt\brdrw15\brdrs\clbrdrb\brdrw15\brdrs \cellx6295\clbrdrt\brdrw15\brdrs\clbrdrb\brdrw15\brdrs \cellx9180\pard\intbl\ltrpar\sl276\slmult1\cf1\b\f0\fs22\cell\cf0\b0\f1\fs17{\pict\wmetafile8\picw28203\pich9559\picwgoal3357\pichgoal1138010009000003401a56000000171a560000000400000003010800050000000b0200000000050000000c026a012b04030000001e0004000000070104000400000007010400171a5600410b2000cc006904030d0000000069012a040000000028000000030d0000690400000100180000000000ec33ac0000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff7fffffffffff7f7fff7fffff7f7fff7ffffe7efffe7e7f7d6d6e7ced6e7bdc6d6b5bdcea5adbd9ca5b59494ad8c94a57b849c7b849c737b94737b946b738c6b738c636b84636b845a637b5a637b525a734a5a734a526b4a526b394a63394a6331425a31425a29395229395229315229395229315231395231395a39426339426342526b4a526b525a73525a735a637b5a637b636b846b6b8c737b8c737b947b849c7b849c949cada5a5bdb5bdcec6c6d6d6dee7e7e7f7f7fffff7fffffffffff7fffffffffff7ffffff


    Mit dem HTMLBody habe ich das auch probiert aber da hängt sich mein programm auf

    Matthias_80 schrieb:

    Komischen Code
    Das ist der blanke RichText.

    RodFromGermany schrieb:

    Welche Formatierung erwartet Body? Probier mal HTML-Format.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Du meinst bestimmt das Bodyformat auf HTML umstellen

    EItem.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML

    das habe ich auch gemacht, ich habe alle 4 Formate ausprobiert ist aber immer das gleiche
    Ich habe den Code nun mal so geändert

    VB.NET-Quellcode

    1. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles B_Senden.Click
    2. 'diese 2 Zeilen sind nur zum Text
    3. RichTextBox1.SelectAll()
    4. RichTextBox1.Copy()
    5. Dim NSpace As Microsoft.Office.Interop.Outlook.NameSpace
    6. Dim Folder As Microsoft.Office.Interop.Outlook.MAPIFolder
    7. Dim outApp As Microsoft.Office.Interop.Outlook.Application
    8. outApp = New Microsoft.Office.Interop.Outlook.Application
    9. NSpace = outApp.GetNamespace("MAPI")
    10. Folder = NSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderSentMail)
    11. EItem = Folder.Items.Add(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem)
    12. EItem.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatRichText
    13. EItem.To = txt_an.Text
    14. EItem.Subject = txt_betreff.Text
    15. EItem.RTFBody = RichTextBox1.Rtf
    16. EItem.Display(False)
    17. End Sub


    Leider kommt da diese Fehlermeldung

    Quellcode

    1. Ein Ausnahmefehler des Typs "System.Runtime.InteropServices.COMException" ist in WindowsApplication3.exe aufgetreten.
    2. Zusätzliche Informationen: Fehler beim Ausführen der Operation.

    Matthias_80 schrieb:

    Du meinst bestimmt

    RodFromGermany schrieb:

    Welche Formatierung erwartet Body?

    Matthias_80 schrieb:

    Zusätzliche Informationen:
    In welcher Zeile Deines Codes?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Mails sind nmE Plain-Text oder HTML-basiert, da wirst Du mit RichText möglicherweise kein Glück haben.

    Matthias_80 schrieb:

    Fehlermeldung
    Kannst Du mal Dein komplettes Projekt posten?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo Matthias,

    anbei Dein Programm lauffähig zurück.
    Eine E-Mail besteht aus reinem Text (Plain-Text) oder HTML oder beides zusammen.
    Obwohl das RTF-Format als MailBody in Deinem Programm möglich wäre, stellt Outlook es nicht formatiert dar.
    Bleibt also nur, Dein RTF von der RichTextBox in das HTML-Format zu wandeln. Dazu gibt es viele Möglichkeiten. Musst ein bisschen googlen - es gibt kostenlose und kostenpflichtige Lösungen.
    Eine andere Variante wäre, ein fertiges Control zu benutzen, das schon als HTML ausgeben kann. Vielleicht sogar ein kleiner fertiger Editor mit den Buttons zum Formatieren des Textes (fett, kursiv usw.).

    Hier nun Dein Code, der (bei mir mit Outlook 2010) funktioniert:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.Net.Mime.MediaTypeNames
    3. Imports Microsoft.Office.Interop
    4. Imports SautinSoft
    5. Public Class Form1
    6. Dim WithEvents EItem As Microsoft.Office.Interop.Outlook.MailItem
    7. Private Sub b_oeffnen_Click(sender As Object, e As EventArgs) Handles b_oeffnen.Click
    8. Using openFile1 = New OpenFileDialog
    9. openFile1.DefaultExt = "*.rtf"
    10. openFile1.Filter = "RTF Files|*.rtf"
    11. If (openFile1.ShowDialog() = System.Windows.Forms.DialogResult.OK) Then
    12. RichTextBox1.LoadFile(openFile1.FileName)
    13. End If
    14. End Using
    15. End Sub
    16. Private Sub b_senden_Click(sender As Object, e As EventArgs) Handles b_senden.Click
    17. Dim NSpace As Outlook.NameSpace
    18. Dim Folder As Outlook.MAPIFolder
    19. Dim outApp As Outlook.Application
    20. outApp = New Outlook.Application
    21. NSpace = outApp.GetNamespace("MAPI")
    22. Folder = NSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderSentMail)
    23. EItem = CType(Folder.Items.Add(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem), Microsoft.Office.Interop.Outlook.MailItem)
    24. EItem.To = txt_an.Text
    25. EItem.Subject = txt_betreff.Text
    26. ' Da es bei E-Mails nur Plain-Text und HTML gibt, setzen wir den Typ auf HTML
    27. EItem.BodyFormat = Outlook.OlBodyFormat.olFormatHTML
    28. ' Das RFT-Format muss nach HTML gewandelt werden, dazu bieten sich diverse Fremdkomponenten und Klassen an.
    29. ' Bei diesem Beispiel hier wird eine Komponenten von 'SautinSoft' benutzt: http://www.sautinsoft.com/convert-rtf-to-html/rtf-to-html-component-asp.net.php
    30. Dim r As New RtfToHtml()
    31. ' Hier ein älteres HTML-Format verwenden (nicht HTML5 !!), damit auch ältere E-Mail Programme keine Probleme bekommen.
    32. r.OutputFormat = RtfToHtml.eOutputFormat.HTML_401
    33. r.Encoding = RtfToHtml.eEncoding.UTF_8
    34. ' HTML Body schreiben
    35. EItem.HTMLBody = r.ConvertString(RichTextBox1.Rtf)
    36. EItem.Display(False)
    37. End Sub
    38. End Class



    Die verwendete Komponente ist von "SautinSoft" und nicht kostenlos. Deine Aufgabe besteht nun darin, das Ding zu Kaufen oder einen kostenlosen Konverter zu finden :) .
    Sollte Jemand eine Möglichkeit finden, das reine RTF zu benutzen, würde es mich auch interessieren..


    Dateien

    Matthias_80 schrieb:

    Ich habe gerade festgestellt das die Bilder die in RTF Datei drin sind nicht mit übernommen werden.


    Ja, dies ist nicht weiter verwunderlich, denn der SautinSoft RTF2HTML Konverter muss ja darauf eingestellt sein.
    Schau Dir einfach die Dokumentation an, dort findest Du auch passende Beispiele: LINK
    Speziell dies hier: How to create HTML email with images from RTF and send using Outlook in VB.Net

    Wobei ich der Meinung bin, dass Du Dir lieber ein gescheites TextEditorControl suchen solltest, das HTML-Output hat.
    Noch besser wäre es, wenn Du gar kein Outlook benutzt und die Mail DIREKT versendest.
    Oder ist ein Deinem Fall das Outlook wirklich nötig? Wozu?
    Ich wollte Outlook verwenden, nur um den einen Grund. Wenn ich bei Outlook in Body ein Bild und Tabellen drin habe, dann tut er mir das auch so versenden.
    Ich habe es auch schon mal versucht direkt mit VB zu versenden da werden mir aber die Bilder nicht mit versendet.

    Ich müsste denn es als HTML code versenden und die Bilder auf einen Webserver speichern aber so möchte ich das auch nicht.

    ich möchte genauso wie Outlook es versendet

    Matthias_80 schrieb:

    es als HTML code versenden und die Bilder auf einen Webserver speichern aber so möchte ich das auch nicht


    Du musst die Bilder nicht auf dem Webserver speichern.
    Ich versende auch täglich beruflich dicke Mails mit großen Tabellen und eingebetteten Bildern direkt - alles kein Hexenwerk.

    Matthias_80 schrieb:

    ich möchte genauso wie Outlook es versendet


    Na dann, viel Erfolg :thumbup: