none
Wie kann ich ein oder mehre Smileys per E-Mail versenden RRS feed

  • Frage

  • Hallo,

    ich habe mir ein Programm geschrieben, wo man heraus E-Mails versenden kann, das klappt auch alles, auch das einfügen von Smileys klappt in die RichTextBox, aber wenn ich die E-Mail versende wird zwar der Text angezeigt aber nicht das Smiley im Postfach der Empfängeremail.

    Wie muss ich das denn umsetzen um Smileys mit zuversenden so das der Empfänger diese auch sehen kann?

    LG

    Jack Jones

    Samstag, 23. Juni 2012 09:58

Antworten

  • Hi,

    wie sendest Du denn die Emails? Ohne das zu wissen, kann man dir da nicht helfen.

    Richttext ist aber IMHO die schlechteste Wahl, wenn, solltest Du eher HTML nehmen, dann kannst Du die Smilies als Grafik integrieren.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 23. Juni 2012 10:11
    Moderator
  • Hi,

    Richtextbox1.Text liest zum einen nur den Plaintext aus einer RichTextBox. Wenn überhaupt, wäre das dann RichTextBox.Rtf. Ich glaube aber nicht, dass MailMessage damit umgehen kann.

    Plaintext oder HTML sind die gängigen Verfahren. Daher solltest Du dann mit HTML arbeiten, wenn Du Grafiken einbinden willst.

    In deinem Fall würde die AlternateView Klasse helfen. Du erstellst eine AlternativeView mit dem HTML Code inkl. <img src="..." /> Angaben. Die Grafiken werden dann, je nach Einstellung, direkt in die Email integriert. Ansonsten besteht das Problem, dass die Grafiken von einem Webserver geladen werden müssten, das machen die meisten Clients aber aus Sicherheitsgründen nicht direkt.

      http://msdn.microsoft.com/de-de/library/system.net.mail.alternateview.aspx


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 23. Juni 2012 10:39
    Moderator

Alle Antworten

  • Hi,

    wie sendest Du denn die Emails? Ohne das zu wissen, kann man dir da nicht helfen.

    Richttext ist aber IMHO die schlechteste Wahl, wenn, solltest Du eher HTML nehmen, dann kannst Du die Smilies als Grafik integrieren.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 23. Juni 2012 10:11
    Moderator
  • Hallo,

    vielen Dank für die schnelle Antwort hier der Code zum versenden:

    Private Sub SimpleButton1_Click(sender As System.Object, e As System.EventArgs) Handles SimpleButton1.Click
            Dim mail As New System.Net.Mail.SmtpClient()
            Dim msg As New System.Net.Mail.MailMessage("xxxx.xxxx.xxxx", TextEdit1.Text)
            msg.From = New MailAddress(TextEdit2.Text)
            msg.Subject = ComboBoxEdit1.Text
            msg.Body = RichTextBox1.Text
            mail.Credentials = New NetworkCredential("xxxx", "xxxx")
            mail.Host = "xxxx.xxxx.xxxx"
            mail.Send(msg)
            MessageBox.Show("Nachricht wurde erfolgreich versendet")
            Close()
        End Sub

    Per Klickereigniss wird dann ein Smiley eingefügt. Wie meinst du mit HTML?

    LG

    Jack Jones

    Samstag, 23. Juni 2012 10:23
  • Hi,

    Richtextbox1.Text liest zum einen nur den Plaintext aus einer RichTextBox. Wenn überhaupt, wäre das dann RichTextBox.Rtf. Ich glaube aber nicht, dass MailMessage damit umgehen kann.

    Plaintext oder HTML sind die gängigen Verfahren. Daher solltest Du dann mit HTML arbeiten, wenn Du Grafiken einbinden willst.

    In deinem Fall würde die AlternateView Klasse helfen. Du erstellst eine AlternativeView mit dem HTML Code inkl. <img src="..." /> Angaben. Die Grafiken werden dann, je nach Einstellung, direkt in die Email integriert. Ansonsten besteht das Problem, dass die Grafiken von einem Webserver geladen werden müssten, das machen die meisten Clients aber aus Sicherheitsgründen nicht direkt.

      http://msdn.microsoft.com/de-de/library/system.net.mail.alternateview.aspx


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 23. Juni 2012 10:39
    Moderator
  • Hallo,

    wie muss ich das genau machen, ich habe die Smileys direkt im Programmordner drin, diese werden in einer Groupbox angezeigt in einzelne Picturesboxen über folgendes Klickereigniss wird das ausgewählte Smiley in die RichTextbox eingefügt:

    Dim Image As Image = Image.FromFile(System.IO.Path.Combine(Application.StartupPath, "sun1.gif"))
            Dim OriginalClipboardData As IDataObject = Clipboard.GetDataObject
    
            Clipboard.SetImage(Image)
    
            RichTextBox1.Paste()
    
            Clipboard.SetDataObject(OriginalClipboardData)

    wie genau muss ich das nun AlternativeView mit dem HTML Code inkl. <img src="..." /> Angaben erstellen und wie steht es dann in der Beziehung zum versenden? Wenn die Smileys in den Html auch drin, weiss doch das Html nicht welches Smiley ich ausgewählt habe.

    AlternativeView habe ich schon per Imports eingebunden.

    Vielleicht könntes du mir ein verständliches Beispiel aufzeigen.

    Vielen Dank im Voraus

    LG

    Jack Jones

    Samstag, 23. Juni 2012 11:12
  • Hi,

    so, wie Du es machst, geht es nicht. Du musst dann schon HTML Code aufbauen, der die Bilddateien korrekt referenziert. Das Zeugs mit de RichTextBox kannst Du hier komplett weglassen, auch das kopieren, einfügen, ...

    Bau es einfach mal so:

    <html>
    <head>
        <title>Email</title>
    </head>
    <body>
    Hallo Welt
    <img src="Images/Datei.png" alt="" />
    </body>
    </html>
    

    Die Grafik muss dabei vom Anwendungspfad her gesehen erreichbar sein. Wenn Du einen anderen Pfad wie bspw. file:///C/Irgendwo/Datei.png als src angibst, sollte es auch gehen, probiert habe ich das aber nicht.

    Mit diesem HTML Code erzeugst Du dann eine AlternateView Instanz mit dem ContentType text/html und fügst diese der AlternateViews Collection des MailMessage Objekts hinzu.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 23. Juni 2012 11:53
    Moderator
  • Hallo,

    eine Verständnisfrage wenn ich RichTextbox weglassen soll, wo wird dann der eigentliche Text der Mail geschrieben?

    LG

    Jack Jones

    Samstag, 23. Juni 2012 12:27
  • Hi,

    tja, das wäre dann die Frage :)

    Erstellst Du eine WinForms Anwendung? Falls ja, könntest Du das WebBrowser Control dafür verwenden. Alternativ gibt es auch HTML Editoren, die man direkt als Control einbinden kann.

    Schau mal hier, da findest Du einige mögliche Lösungen:

      http://www.google.de/#q=winforms+html+editor


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 23. Juni 2012 13:05
    Moderator
  • Hallo,

    ich habe es jetzt mit Webbrowser  control umgesetzt, aller dings wenn ich die Form aufrufe das erste mal kann ich schreiben etc, aber wenn ich es schließe und wieder aufrufe kommt ein Dialog was mich fragt ob ich das Dokument speichern möchte, oder nicht bzw geöffnet lassen.

    Mein Frage kann ich verhindern das die Frage kommt oder gibt es die Möglichkeit beim beenden der Form das Document was das Dialog mein zu schließen.

    Ich habe im Loadereigniss folgendes:

    Me.WebBrowser1.Navigate("about:blank")
            Application.DoEvents()
            Me.WebBrowser1.Document.OpenNew(False).Write("<html><body><div id=""editable"">Edit this text</div></body></html>")
    
            'turns off document body editing 
            For Each el As HtmlElement In Me.WebBrowser1.Document.All
                el.SetAttribute("unselectable", "on")
                el.SetAttribute("contenteditable", "false")
            Next
    
            'turns on editable div editing 
            With Me.WebBrowser1.Document.Body.All("editable")
                .SetAttribute("width", Me.Width & "px")
                .SetAttribute("height", "100%")
                .SetAttribute("contenteditable", "true")
            End With
    
            'turns on edit mode 
            Me.WebBrowser1.ActiveXInstance.Document.DesignMode = "On"
            'stops right click->Browse View 
            Me.WebBrowser1.IsWebBrowserContextMenuEnabled = False

    LG

    Jack Jones

     
    Samstag, 23. Juni 2012 20:11
  • Kann man nicht einfach einen billigen Text-Editor (Textbox) verwenden, und nach dem "abschicken" (Button) einfach den HTML-Code aus diesem Text automatisch generieren? So in etwa:

    HTMLText = "<html><head>...</head><body>Textbox1.Text</body></html>"

    HTMLText = HTMLText.Replace(":-)","<img src='smiley.jpg'>")

    Gut, dann sieht man die Smileys nicht in der Editier-Ansicht, aber das könnte man dann wiederum mit einer "Vorschau" klären, die man z.B. im erwähnten Web-Browser-Control anzeigen und "abnicken" könnte. So nach dem Motto "So sieht ihre Mail aus, absenden [ ] ja [ ] nein [ ] vielleicht [ ] weiss nicht". :-)

    Welche Smileys wie umgesetzt werden, könnte man ja vorher irgendwo definieren, z.B. in einem Dictionary, das man einfach loopt.

    LG, Dennis.

    Montag, 25. Juni 2012 09:38
  • Hallo JackJones1980,

    Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert


    Robert Breitenhofer, MICROSOFT  Twitter Facebook
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Donnerstag, 26. Juli 2012 09:06
    Moderator