IT-Academy Logo
Sign Up Login Help
Home - Programmieren - Visual Basic - E-Mails empfangen und senden mit VB und MAPI



E-Mails empfangen und senden mit VB und MAPI

Visual Basic stellt uns für den Empfang und Versand von E-Mails zwei einfach zu benutzende Steuerelemente zur Verfügung, die wir uns in diesem Artikel näher ansehen.


Autor: Tobias Surmann (incsoft)
Datum: 03-04-2003, 15:24:33
Referenzen: keine
Schwierigkeit: Fortgeschrittene
Ansichten: 19026x
Rating: 7.6 (5x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Einleitung

Visual Basic stellt uns für den Empfang und Versand von E-Mails zwei einfach zu benutzende Steuerelemente zur Verfügung, die unter dem Begriff MAPI (Messaging Application Programming Interface) zusammengefasst werden. Nachfolgend eine Übersicht über die Funktionsbereiche beider Steuerelemente:
  • Das MAPISession-Steuerelement baut eine neue MAPI-Sitzung auf. Ist eine gültige Sitzung erstellt worden, kann man das Steuerelement über die SessionID-Eigenschaft mit dem MAPIMessages-Steuerelement verbinden. Das MAPISession-Steuerelement wird also nur für die Initialisierung benötigt.
  • Das MAPIMessages-Steuerelement stellt die eigentliche Funktionalität für das Abrufen und Versenden von Nachrichten zur Verfügung.
Wichtig zu wissen bei der Verwendung von MAPI ist, dass diese auf das Standard-Mailprogramm des Benutzers zurückgreifen, um E-Mail Funktionen anbieten zu können. Das bedeutet, dass wir zunächst ein Konto in unserem E-Mail-Programm anlegen müssen. Ich gehe hier davon aus, dass wir Outlook als Standard-Mail-Programm verwenden und sie dort bereits über ein Benutzerkonto verfügen.

MAPI-Steuerelemente in die Entwicklungsumgebung einfügen

Um die beiden MAPI-Steuerelemente in die Entwicklungsumgebung einzufügen, müssen wir wie folgt vorgehen:
  1. Klicken Sie mit der rechten Maustaste auf das Werkzeugfenster und wählen Sie Komponenten? aus. Alternativ können wir den Auswahldialog für zusätzliche Steuerelemente auch über das Menü Projekt | Komponenten erreichen.

  1. Im sich nun öffnenden Dialogfenster wählen wir aus der Liste der verfügbaren zusätzlichen Steuerelemente den Eintrag Microsoft MAPI Controls 6.0 aus. Zur Bestätigung klicken wir auf OK.

  1. Im Werkzeugfenster erscheinen nun die beiden neuen Steuerelemente, die uns die gewünschte Funktionalität zum Empfang und Versand von E-Mails zur Verfügung stellen.



Eine MAPI-Sitzung aufbauen

Wir positionieren zunächst je eine Instanz der beiden MAPI-Steuerelemente auf dem Formular. Wir werden anfangs erst einmal nur dem MAPISession-Steuerelement Beachtung schenken.

Für den Aufbau einer MAPI-Sitzung brauchen wir zwei Dinge - den Benutzernamen und das dazugehörige Passwort. Beide Eigenschaften können Sie bequem über die Entwicklungsumgebung einstellen. Dazu wählen Sie im Eigenschaftenfenster UserName und Password aus und setzen die gewünschten Werte. Wir wollen dem Benutzer aber die Möglichkeit geben, selbst diese Werte einzutragen, da unser Programm dadurch sehr viel flexibler wird. Daher fügen wir zwei Textboxen und zwei Labels ein. Die erste Textbox nennen wir txtUser, die zweite bekommt den Namen txtPassword. Das Formular sollte nun ungefähr wie folgt aussehen:




Um nun den Anmeldevorgang durchzuführen müssen wir folgende Codezeilen einfügen. Vorher platzieren wir natürlich noch einen CommandButton mit dem Namen cmdSignOn und der Bezeichnung "Anmelden" (Eigenschaft Caption) auf dem Formular.

Private Sub cmdSignOn_Click()

On Error Resume Next

'Neue Sitzung aufbauen
MAPISession1.UserName = txtUser.Text
MAPISession1.Password = txtPassword.Text
MAPISession1.SignOn


'Fehlerbehandlung
If Err Then

MsgBox "Ungültiger Benutzername oder falsches Passwort!"
Exit Sub

Else

'MAPI-Steuerelemente miteinander verbinden
MAPIMessages1.SessionID = MAPISession1.SessionID


'Alle E-Mails aus dem Posteingang abholen
FetchMails

End If

End Sub



Zuerst weisen wir den Eigenschaften UserName und Password des MAPISession-Steuerelements die vom Benutzer eingegebenen Werte zu. Danach versuchen wir uns mit diesen Daten anzumelden. Sollte dies fehlschlagen, wird eine Fehlermeldung ausgegeben. Es ist zu beachten, dass dem Anwender keine genaue Fehlermeldung ausgegeben wird, sodass er keine Rückschlüsse auf evtl. Sicherheitslücken ziehen kann. Würde z. B. die Meldung "Falsches Passwort!" ausgegeben werden, wüsste ein bösartiger Angreifer, dass der Benutzername existiert und braucht nur noch das Passwort zu erraten. Ist die Anmeldung erfolgreich, werden die beiden MAPI-Steuerelemente über die SessionID-Eigenschaft miteinander verbunden. Danach wird die Prozedur FetchMails aufgerufen, die alle E-Mails aus dem Posteingang abholt und die wir im nächsten Abschnitt entwickeln werden.

Alle E-Mails aus dem Posteingang abholen

Da wir nun eine Verbindung zum MAPI-Server aufgebaut haben, können wir alle E-Mails des Posteingangs auflisten. Dazu fügen wir eine ListBox (lstMails) und weitere Schaltflächen hinzu. In der Entwicklungsumgebung sollte das Programm nun wie folgt aussehen:




Hier die Prozedur FetchMails, die alle eingetroffenen E-Mails mit Betreff, Absenderadresse, Empfangszeit und Anzahl der Anlagen anzeigt:

Private Sub FetchMails()

With MAPIMessages1

.Fetch

For i = 0 To .MsgCount - 1

.MsgIndex = i
lstMails.AddItem .MsgSubject & vbTab & .MsgOrigAddress & vbTab & .MsgDateReceived & .AttachmentCount

Next i

End With

End Sub



Der Aufruf der Fetch-Methode bewirkt, dass die E-Mails vom Server abgerufen werden. Danach gehen wir in einer Schleife alle Nachrichten durch und tragen alle relevanten Informationen über eine einzelne E-Mail in die Liste ein.

E-Mails lesen

Jetzt haben wir alle E-Mails abgerufen und können in der Liste eine Nachricht auswählen, die wir uns näher ansehen möchten. Zunächst fügen wir aber eine neue TextBox ein, die den Namen txtMailText erhält und deren Eigenschaft Multiline wird auf True setzen. Durch Klick auf die Schaltfläche mit der Beschriftung Lesen (cmdReadMail) wird der komplette Inhalt der Nachricht auf dem Bildschirm angezeigt.

Private Sub cmdReadMail_Click()

'Index der gewählten E-Mail an MAPI weiterleiten
MAPIMessages1.MsgIndex = lstMails.ListIndex

'Nachrichtentext in das Anzeigefeld einfügen
txtMailText.Text = MAPIMessages1.MsgNoteText & vbCrLf

End Sub



Wählen wir nun eine beliebige E-Mails aus und klicken auf die Schaltfläche Lesen, wird uns der komplette Inhalt der Mail angezeigt. Um unser Programm zu vervollständigen fehlt nun nur noch eine Funktion zum Versand von eigenen E-Mails. Wie das geht erfahren Sie im nächsten Abschnitt.

E-Mails schreiben

Das Versenden von eigenen E-Mails aus einem VB-Programm heraus ist sehr einfach. Wir müssen einfach nur die Eingabemaske des durch MAPI angesprochenen Mail-Systems (in diesem Fall Outlook) aufrufen.




Um diese Funktionalität in unserem Programm zur Verfügung zu stellen, schreiben wir folgenden Quelltext für die Schaltfläche Schreiben (cmdWriteMail):

Private Sub cmdWriteMail()

MAPIMessages1.Compose
MAPIMessages1.Send True

End Sub



Wie gesagt, das Verschicken einer Nachricht aus VB heraus ist sehr einfach. Mit zwei Codezeilen können wir die komplette Funktionalität für dieses Feature implementieren. Mit der Compose-Methode des MAPIMessage-Steuerelements wird eine neue leere E-Mail erstellt. Durch Aufruf der Send-Methode und des Parameters True wird eine Eingabemaske angezeigt (s.o.). Der Benutzer braucht nun nur noch den Empfänger, Betreff und Nachrichtentext eingeben und kann die E-Mail dann mit einem Klick auf Senden abschicken.

MAPI-Sitzung beenden

Um eine aktuelle Sitzung zu beenden, brauchen wir nur die SignOff-Methode des MAPISession-Steuerelements aufzurufen. Das darunter liegende Mail-System erledigt dann alle Arbeiten, um die Verbindungen zwischen Mail-Server und Programm zu trennen.

Private Sub cmdSignOff

'Sitzung beenden und Programm verlassen
MAPISession1.SignOff
End

End Sub



Zusammenfassung

Natürlich lässt sich mit beiden Steuerelementen noch viel mehr anstellen. Im Rahmen dieses Artikels haben wir nur die Grundlagen der MAPI-Programmierung besprochen. Mit dem erlangten Wissen, sollten Sie nun in der Lage sein, einfache E-Mail Funktionen in ihre Programme einzubauen, um z. B. ein Feedback-Formular für ihre Kunden zur Verfügung zu stellen.

Zusammenfassend können Sie mit der Nutzung von MAPI folgende Möglichkeiten ausschöpfen:
  • Zugriff auf Meldungen im Posteingang
  • Verfassen einer neuen Nachricht
  • Hinzufügen und Löschen von Nachrichtenempfängern und Anlagen
  • Senden von Nachrichten (mit oder ohne zugehörige Benutzeroberfläche)
  • Speichern, Kopieren und Löschen von Nachrichten
  • Anzeigen des Adressbuch-Dialogfeldes
  • Anzeigen des Detail-Dialogfeldes
  • Zugriff auf Anlagen, einschließlich OLE-Anlagen (OLE bedeutet Object Linking and Embedding).
  • Auflösen eines Empfängernamens beim Eingeben von Adressen
  • Aktionen zum Antworten, Antworten an alle oder Weiterleiten von Nachrichten


similie
Insider
Beitrag vom:
01-04-2005, 13:17:33

Perfekt

Super, danke das ist genau das wonach ich gesucht habe.



-----------------------------------------------------
Aus einem verkniffenen Arsch kommt nie ein glücklicher Furz


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04508
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06243
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1144
Comments: 0