none
Plaintext-Email mit Formatierung senden RRS feed

  • Frage

  • Hallo,

    kennt jemand eine Möglichkeit, aus VB heraus eine Reintext-Email zu senden, bei welcher clientseitig dann die Formatierungszeichen wie *fettgedruckter Text*, _unterstrichener Text_ bzw. /kursiver Text/ erkannt werden?

    Donnerstag, 19. Juni 2014 11:02

Antworten

  • Hallo Eiko,

    Nö. Das muss nicht gehen und wird es auch nicht, wenn der Client das nicht unterstützt. Plaintext kennt keine Formatierungen wie Fett, Kursiv, ... Und wenn das lokale Mailprogramm des Empfängers das nicht unterstützt, steht dann halt eben _Text_, *Text*, ... in der Ausgabe.

    Wenn Du Formatierungen brauchst, nimm HTML.

    Wenn Du einen Newsletter aufbauen willst, würde ich ggfs. auch beides in einem senden (also eine Hybridmail mit einem Plaintext und einem HTML Part).


    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


    Donnerstag, 19. Juni 2014 14:28
    Moderator

Alle Antworten

  • Hallo,
    wenn es um das Senden einer E-Mail in .NET geht, siehe hier.

    Um die speziellen Formatierungszeichen Clientseitig zu erkennen, musst du ein eigenes Mail Programm schreiben bzw. ein Addin für Outlook o.ä.

    Grundsätzlich würde ich eher versuchen die Zeichen noch vor dem Senden gegen die HTML Entsprechungen auszutauschen. Beispielsweise mit Regex.

    Hier noch ein Beispiel zum Regex:

            'Imports System.Text.RegularExpressions'
            Dim s = "_Unterstrichen_*Fett*"
            Dim count As Integer = 0
            s = Regex.Replace(s, "_", Function(m)
                                          count += 1
                                          If count Mod 2 <> 0 Then
                                              Return "<u>"
                                          Else
                                              Return "</u>"
                                          End If
                                      End Function) ' _..._ austauschen'
    
            count = 0 'Zähler zurück setzen'
            s = Regex.Replace(s, "\*", Function(m)
                                           count += 1
                                           If count Mod 2 <> 0 Then
                                               Return "<b>"
                                           Else
                                               Return "</b>"
                                           End If
                                       End Function) ' *...* austauschen'


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets


    Donnerstag, 19. Juni 2014 11:10
    Moderator
  • Das Senden ist kein Problem, das habe ich schonmal implementiert.

    Ich möchte aus meiner Anwendung heraus eine Mail Senden können, die eben als Reintext-Mail gesendet wird (ist für einen Newsletter) und diese Formatierungen enthält. Ich möchte es nicht als HTML senden. Wenn ich in Thunderbird eine Reintext-Mail erstelle und diese absende, dann steht da im Nachrichtenquelltext auch nur *fettText*... Ich werde nochmal schauen, ob es an den Zeichensätzen liegt, irgendwie muss es ja gehen.

    Donnerstag, 19. Juni 2014 14:17
  • Hallo Eiko,

    Nö. Das muss nicht gehen und wird es auch nicht, wenn der Client das nicht unterstützt. Plaintext kennt keine Formatierungen wie Fett, Kursiv, ... Und wenn das lokale Mailprogramm des Empfängers das nicht unterstützt, steht dann halt eben _Text_, *Text*, ... in der Ausgabe.

    Wenn Du Formatierungen brauchst, nimm HTML.

    Wenn Du einen Newsletter aufbauen willst, würde ich ggfs. auch beides in einem senden (also eine Hybridmail mit einem Plaintext und einem HTML Part).


    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


    Donnerstag, 19. Juni 2014 14:28
    Moderator
  • Ich habs befürchtet. :) Mails als Multipart-MIME zu senden wird nicht das Problem werden, aber den Editor schreiben - na mal schauen.

    Ums zu vervollständigen, ich hab mir grad nochmal in Thunderbird die Nachrichtenquelltexte angeschaut, die über TB gesendeten haben als Content-type-encoding ISO-8859-15, die über mein Testprogramm UTF-8. Wenn ich bei letzterem die Anzeigecodierung im TB auf westlich (ISO-8859-1) setze, dann zeigts das fett. In der Encoding-Klasse scheints aber kein ISO-8859-1 zu geben?

    Donnerstag, 19. Juni 2014 14:43
  • Hallo Eiko,

    und was machst Du mit Usern, die kein Thunderbird haben?

    So oder so: Encodings, dies nicht als direkte Eigenschaft zur Verfügung stehen, kannst Du über:

    Encoding.GetEncoding( "ISO-8859-1" )
    Encoding.GetEncoding( "ISO-8859-15" )
    ...

    erhalten. Siehe dazu auch:

      http://msdn.microsoft.com/de-de/library/t9a3kf7c.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


    Donnerstag, 19. Juni 2014 14:55
    Moderator
  • ^^das funktioniert zumindest mit TB. Aber du hast recht, auf dem Phone gehts schon wieder nicht. :( Ich war echt in der Überzeugung, dass diese "Formatierungszeichen", zumal sie mir schon ein paar Jahre und bei verschiedenen Clients geläufig sind, quasi sowas wie Standard sind - dem scheint aber nicht so zu sein. Also werd ich das mittels Multipart-MIME mal probieren.

    Danke für die Tipps.

    Donnerstag, 19. Juni 2014 15:02
  • Hallo Eiko,

    sind die Fragen geklärt? Falls ja, wäre es prima, wenn Du die Antworten bewerten und ggfs. auch als Antwort markieren würdest.


    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

    Sonntag, 22. Juni 2014 15:18
    Moderator