DevTrain

Autor: Bernhard Elbl

vCard´s - Electronic Business Card´s generieren

v(isiten)Card - The Electronic Business Card - ist ein Datenformat für Adressen, die hauptsächlich für Kontakte in vielen SMPT-Clients wie Outlook verwendet werden könne. Besonders geeignet sind Sie für geschäftliche Kontakte, da man in einer vCard auch Angaben über Abteilung, entsprechendes Büro, Position in der Firma, und vieles mehr machen kann. Der Vorteil einer vCard ist, dass Sie Standard ist, der von einem unabhängigen Konsortium definiert wurde. So können Sie plattform-unabhängig eingesetzt werden. Eine vCard besteht im Grunde nur aus Text.

Also will ich heute ein Beispiel zeigen, wie man v(isten)-Card´s mit Hilfe von ASP dynamisch am Server generieren kann. Mit Angabe des entsprechendes ContentTypes kann die vCard direkt in den SMPT-Client (Outlook) aufgenommen werden, ohne Sie vorher client-seitig speichern zu müssen.

Wie sieht eine vCard aus?
BEGIN:VCARD
VERSION:2.1
N:Elbl;Bernhard
FN:Bernhard Elbl
ORG:ppedv AG
TITLE:Software/Entwicklung
TEL;WORK:08677-9889-0
TEL;HOME:0111111
TEL;FAX;WORK:08677-9889-44
TEL;CELL:017111111111111111111
EMAIL;INTERNET:BernhardE@ppedv.de
URL;WORK:http://www.ppedv.de
ADR;WORK;POSTEL;PARCEL:;;Markler Str. 15b;84489 Burghausen
END:VCARD

Alle Werte haben spezielle Attribute, mit deren Hilfe Sie Vorname, Nachname... zugeordnet werden können. Eine vCard beginnt immer mit BEGIN:VCARD, danach kommt die Versions Angabe. Jede vCard endet mit einen END:VCARD. Dass gibt uns die Möglichkeit auch mehrere vCards gleichzeitig zu transferieren.
Werte von Attributen kommen immer nach einem Doppelpunkt...
N:Nachname; Vorname
Hier haben wir gleich zwei Werte. Nachname und Vorname. Wichtig ist dass diese 2 Werte durch einen Strichpunkt getrennt werden.
Der Strichpunkt teilt aber nicht nur 2 Werte für ein Attribut sondern kann auch bestimmte Attribute genauer spezifizieren...
TEL;WORK:08677-9889-0
Das ist die Telefonnummer, unter der die Person in der Firma zu erreichen ist. Das Attribut "TEL" wird genau spezifiert durch "WORK". Hier ist wieder wichtig nach dem Attributnamen seine Spezifierung zu anzugeben, und diese mit einem Strichpunkt zu trennen. Werden keine Spezifierungen angeben, so werden Default-Spez. verwendet. Nach dem Ende der Spezifierung kommt der Wert. Vor dem Wert muss wieder ein Doppelpunkt stehen!

Die vCard-Nachlese:
Alle Attribute (und dass sind wirklich viele) mit Ihren Spezifikationen können hier nachgelesen werden...
www.imc.org/pdi/vcard-21.doc

Die Umsetzung in ASP lässt sich am besten mit Hilfe ein Klasse machen, um eine einfache Wiederverwendbarkeit zu erreichen. Ist die Klasse einmal geschrieben, kann Sie in jeder ASP-Seite includiert und wiederverwendet werden. Auch das Erweitern der hier vorgestellten Klasse um zusätzliche Attribute ist sehr einfach.

Zu erst die Verwendung der Klasse mit ASP
' ContentType für vCard setzen
Response.Clear
Response.ContentType = "text/x-vcard"

' Klasse instanziieren
set oVCard = new CVCard
' Personalien setzen
with oVCard
 .SetFName "Bernhard Elbl" ' Famaly-Name
 .SetName "Elbl", "Bernhard" ' Nachname, Vorname
 .SetAdresse "Markler Str. 15b", "84489 Burghausen" ' Adresse setzen
 .SetTel_prv "0111111" ' Telefon-Nummer (Privat)
 .SetTel_mobil "017111111111111111111" ' Telefon-Nummer (Handy)
 .SetPosition "Software/Entwicklung" ' Abteilung in der Firma
 .SetFirma "ppedv AG" ' Firmename
 .SetTel_fa "08677-9889-0" ' Telefon-Nummer (Firma)
 .SetFax_fa "08677-9889-44" ' Faxnummer (Firma)
 .SetEmail "BernhardE@ppedv.de" ' Email-Adresse
 .SetWebSite "http://www.ppedv.de" ' Internet-Adresse der Person setzen
 
 ' GetVCard - String der die komplette vCard darstellt in den Browser schreiben
 Response.Write .GetVCard
end with

' Klasse zerstören
set oVCard = nothing

Die Reihenfolge der Angabe spielt keine Rolle, da die einzelnen Werte erst in GETVCard zusammen gestellt werden. Alle Set...-Funktionen generieren einen zusätzlichen TAG in der vCard.

Und jetzt zur Klasse VCard

Class CVCard
 ' Modul-Variablen
 Private m_sName ' kompletter TAG für den Namen z.B.: "N:Elbl;Bernhard"
 Private m_sFName ' kompletter TAG für Famaly-Name...
 Private m_sFirma ' kompletter TAG für Firma....
 Private m_sPosition ' usw........
 Private m_sTel_fa
 Private m_sTel_prv
 Private m_sFax_fa
 Private m_sTel_mobil
 Private m_sAdresse
 Private m_sEmail
 Private m_sURL
 
 ' Diese Funktionen setzen alle Angaben (Modul-Variablen zusammen)
 ' wobei immer BEGIN und END mit geschrieben wird
 ' Sie können also auch eine leere Karte versenden!
 Public Function GetVCard
  vVCARD = "BEGIN:VCARD" & vbCrLf & "VERSION:2.1" & vbCrLf
  vVCARD = vVCARD & m_sName
  vVCARD = vVCARD & m_sFName
  vVCARD = vVCARD & m_sFirma
  vVCARD = vVCARD & m_sPosition
  vVCARD = vVCARD & m_sTel_fa
  vVCARD = vVCARD & m_sTel_prv
  vVCARD = vVCARD & m_sFax_fa
  vVCARD = vVCARD & m_sTel_mobil
  vVCARD = vVCARD & m_sEmail
  vVCARD = vVCARD & m_sURL
  vVCARD = vVCARD & m_sAdresse
  vVCARD = vVCARD & "END:VCARD" & vbCrLf
  
  GetVCard = vVCard
 End Function

' Funktionen die die einzelnen TAG´s (Attribut;Spezifizierung:Wert) generieren und in
' Modul-Variablen zwischen speichern.
 ' Funktion SetName generiert den Nachname, Vorname
 Public Function SetName(ByVal Nachname, ByVal Vorname)
  m_sName = "N:" & Nachname
  If len(Vorname) <> 0 then
   m_sName = m_sName & ";" & Vorname
  End If
  m_sName = m_sName & vbCrLf
 End Function
 Public Function SetFName(ByVal Value)
  m_sFName = "FN:" & Value & vbCrLf
 End Function
 Public Function SetFirma(ByVal Value)
  m_sFirma = "ORG:" & Value & vbCrLf
 End Function
 Public Function SetPosition(ByVal Value)
  m_sPosition = "TITLE:" & Value & vbCrLf
 End Function
 Public Function SetTel_fa(ByVal Value)
  m_sTel_fa = "TEL;WORK:" & Value & vbCrLf
 End Function
 Public Function SetTel_prv(ByVal Value)
  m_sTel_prv = "TEL;HOME:" & Value & vbCrLf
 End Function
 Public Function SetFax_fa(ByVal Value)
  m_sFax_fa = "TEL;FAX;WORK:" & Value & vbCrLf
 End Function
 Public Function SetTel_mobil(ByVal Value)
  m_sTel_mobil = "TEL;CELL:" & Value & vbCrLf
 End Function
 Public Function SetAdresse(ByVal Strasse, ByVal PLZundOrt)
  m_sAdresse = "ADR;WORK;POSTEL;PARCEL:;;" & Strasse & ";" & PLZundOrt & vbCrLf
 End Function
 Public Function SetEmail(ByVal Value)
  m_sEmail = "EMAIL;INTERNET:" & Value & vbCrLf
 End Function
 Public Function SetWebSite(ByVal Value)
  m_sURL = "URL;WORK:" & Value & vbCrLf
 End Function
End Class
%>

Wenn Sie diese Klasse um weitere Attribute erweitern wollen, müssen Sie eine neue Funktion und eine neue dazu gehörige Modul-Variable definieren. Letztere müssen Sie dann noch in die Funktion GETVCard integrieren.

Weitere Links...
http://www.imc.org/pdi/
http://www.imc.org/pdi/vcard-21.doc
http://www.vcard.org/


Den Source-Code können Sie von der Seite kopieren und in eine ASP-Seite einfügen. Viel Spass!


Erfasst am: 18.03.2002 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=729
© Copyright 2003 ppedv AG - http://www.ppedv.de