MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access - Code Archiv
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 28.12.2006, 17:26   #1
Struppi73
MOF User
MOF User
Standard Codebeispiel - "From"-String eines Emailheaders bereinigen

Hallo zusammen,

in einem Emailheader findet man als Absenderangabe ("From") zum Beispiel folgendes:

"Michael Muster"<m.muster@mail.net>

Es existieren hier die unterschiedlichsten Formatierungen (s. a. Kommentierungen im Codebeispiel). In einem Listview beispielsw. möchte man aber als Absender einfach nur Michael Muster stehen haben?

Genau dieses Problem hatte ich. Nachstehende Funktion ermittelt nun in einem verschachtelten If..Then..Else-Kontrukt alle mir bekannten Möglichkeiten und liefert als Ergebnis einen bereinigten String. Vielleicht brauchts ja mal jemand

Code:

Private Function GetSimpleSenderString(ByVal strFrom As String) As String
'********************************************************************************************
'*  Funktion    : GetSimpleSenderString
'*  Datum       : 28.12.2006
'*  Autor       : Dirk Staudenmaier
'*
'*  LastEdited  : 28.12.2006
'*
'*  Zweck       : ermittelt aus einem kompletten "From"-String eines Email-Headers einen
'*                bereinigten String zur Darstellung beispielsw. in einem Listview.
'*
'*                Mögliche Adressformen                     Bereinigter String
'*                ------------------------------------------------------------
'*                dirkstau@arcor.de                         dirkstau
'*                <dirkstau@arcor.de>                       dirkstau
'*                Dirk Staudenmaier<dirkstau@arcor.de>      Dirk Staudenmaier
'*                dirkstau@arcor.de<dirkstau@arcor.de>      dirkstau
'*                "Dirk Staudenmaier"<dirkstau@arcor.de>    Dirk Staudenmaier
'*                "dirkstau@arcor.de"<dirkstau@arcor.de>    dirkstau
'*
'*  Parameter   : strFrom: kompletter Absenderstring
'*
'*  Rückgabewert: Bereinigter Absenderstring
'********************************************************************************************
'
    Dim str As String
    Dim astr() As String
    Dim pos As Integer
    Dim L As Integer
 
    'sucht nach "<"
    pos = InStr(strFrom, "<")
    '"<" gar nicht enthalten
    If pos = 0 Then
        'sucht nach "@"
        pos = InStr(strFrom, "@")
        'From = Dirk Staudenmaier
        If pos = 0 Then
            GetSimpleSenderString = strFrom
        'From = dirkstau@arcor.de
        Else
            'nur den Teil vor dem "@" zurückgeben
            GetSimpleSenderString = Left(strFrom, InStrRev(strFrom, "@") - 1)
        End If
    '"<" an erster Stelle enthalten
    ElseIf pos = 1 Then
        L = Len(strFrom)
        'endet mit ">"?
        If InStrRev(strFrom, ">") = L Then
            'führendes "<" und endendes ">" entfernen
            str = Right(strFrom, L - 1): str = Left(str, L - 2)
            'sucht nach "@"
            pos = InStr(str, "@")
            If pos = 0 Then
                GetSimpleSenderString = str
            Else
                'nur den Teil vor dem "@" zurückgeben
                GetSimpleSenderString = Left(str, InStrRev(str, "@") - 1)
            End If
        Else
            GetSimpleSenderString = strFrom
        End If
    '"<" nach der ersten Stelle enthalten
    'z.B. "dirkstau@arcor.de"<dirkstau@arcor.de>
    Else
        'nur den Teil vor dem "<" zurückgeben
        str = Left(strFrom, InStrRev(strFrom, "<") - 1)
        'nach '"' suchen
        pos = InStr(str, Chr$(34))
        ' '"' an erster Stelle gefunden
        'dann kann auch von einem endenden '"' ausgegangen werden
        If pos = 1 Then
            'Teilstrings zwischen den '"' ermitteln
            astr = Split(str, Chr$(34))
            'Zweiter Teilstring ist gesuchter String
            str = astr(1)
            'nach "@" suchen
            pos = InStr(str, "@")
            If pos = 0 Then
                GetSimpleSenderString = str
            Else
                'nur den Teil vor dem "@" zurückgeben
                GetSimpleSenderString = Left(str, InStrRev(str, "@") - 1)
            End If
        'kein '"' an erster Stelle gefunden
        Else
            GetSimpleSenderString = str
        End If
    End If
End Function
Code eingefügt mit dem MOF Code Converter

__________________

Viele Grüße Dirk

Ich lerne jeden Tag ein wenig dazu...

=> Ac2k, WinXP/NT

Know-How ohne Ende: www.mvps.org
Struppi73 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.