PDA

Vollständige Version anzeigen : "From"-String eines Emailheaders bereinigen


Struppi73
28.12.2006, 18:26
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 ;)

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