Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Exchange Anbindung (https://www.delphipraxis.net/159621-exchange-anbindung.html)

Jambs 5. Apr 2011 15:35

Exchange Anbindung
 
Hi,

ich muss ein Programm schreiben, mit dem ich alle Mails aus einem öffentlichen Ordner in eine Datenbank schreiben muss. Das schreiben in die Datenbank ist kein Problem. Jedoch weiß ich nicht wie ich mich mit dem Exchange verbinden kann bzw. wie ich diese Mails aus dem Ordner auslesen kann.

Folgende Produkte stehen mir zur Verfügung:
Microsoft Windows Server Standard 2008
Microsoft Exchange Server Standard 2010
Delphi 7 / Delphi 2009
Advantage Database


Danke schon mal im vorraus


Alex

mkinzler 5. Apr 2011 16:06

AW: Exchange Anbindung
 
Delphi-Quellcode:
Ordner := OutlookApp.Session.Folders.Item('Öffentliche Ordner')
                               .Folders.Item('Alle Öffentlichen Ordner')
                               .Folders.Item('<Ordnername>');

Jambs 5. Apr 2011 22:01

AW: Exchange Anbindung
 
Zitat:

Zitat von mkinzler (Beitrag 1093199)
Delphi-Quellcode:
Ordner := OutlookApp.Session.Folders.Item('Öffentliche Ordner')
                               .Folders.Item('Alle Öffentlichen Ordner')
                               .Folders.Item('<Ordnername>');

Danke und kann ich die Verbindung zum Exchange aufbauen?

Willmar.Heinrich 6. Apr 2011 06:50

AW: Exchange Anbindung
 
Hi Alex,

schau mal auf http://www.gangl.de, Thomas Gangl hat diverse Agents im Angebot, die das für Dich machen können.

mkinzler 6. Apr 2011 07:16

AW: Exchange Anbindung
 
Zitat:

Danke und kann ich die Verbindung zum Exchange aufbauen?
Der Code bedint natürlich eine eingerichtetes Mapi-Profil. Zudem wird Outlook benötigt.

Hier mal ein kleines Testprogramm:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleServer, OutlookXP;

type
  TForm1 = class(TForm)
    OutlookApp: TOutlookApplication;
    ListBox1: TListBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
    ordner, i_: OleVariant;
    i: Integer;

begin
    Ordner := OutlookApp.Session.Folders.Item('Öffentliche Ordner')
                                .Folders.Item('Alle Öffentlichen Ordner')
                                .Folders.Item('<Name des Ordners>');
    for i := 1 to ordner.items.Count do
    begin
        ListBox1.Items.Add( ordner.items.item[i].Subject);
    end;

end;

end.

Jambs 6. Apr 2011 09:59

AW: Exchange Anbindung
 
Ich werde es jetzt mal versuchen.

Gibt es aber auch eine Möglichkeit ohne Outlook?

Jambs 6. Apr 2011 11:27

AW: Exchange Anbindung
 
Beim ausführen bekomm ich die Meldung

Der versuchte Vorgang konnte nicht ausgeführt weren. Ein Objekt wurde nicht gefunden.

Und steht dann auf dieser Zeile:
Ordner := OutlookApp.Session.Folders.Item('Öffentliche Ordner')

rollstuhlfahrer 6. Apr 2011 11:38

AW: Exchange Anbindung
 
Ist deine Ordnerhierarchie richtig? - Oder hast du zwischendrin oder am Ende einen nicht-existenten Ordner erwischt (ala "<Name des Ordners>")?

Bernhard

franktron 6. Apr 2011 11:42

AW: Exchange Anbindung
 
Zitat:

Zitat von Jambs (Beitrag 1093360)
Ich werde es jetzt mal versuchen.

Gibt es aber auch eine Möglichkeit ohne Outlook?

Nimm doch IMAP das kann der Exchange auch und ist mit Indy kein Problem.

Jambs 6. Apr 2011 12:12

AW: Exchange Anbindung
 
Zitat:

Zitat von rollstuhlfahrer (Beitrag 1093387)
Ist deine Ordnerhierarchie richtig? - Oder hast du zwischendrin oder am Ende einen nicht-existenten Ordner erwischt (ala "<Name des Ordners>")?

Bernhard

ich denke schon das die Ordnerhierarchie richtig ist.

Delphi-Quellcode:
Ordner := OutlookApp.Session.Folders.Item('Öffentliche Ordner')
                              .Folders.Item('Alle Öffentlichen Ordner')
                              .Folders.Item('ZMI_Eingang');

Jambs 6. Apr 2011 12:29

AW: Exchange Anbindung
 
Zitat:

Zitat von franktron (Beitrag 1093388)
Zitat:

Zitat von Jambs (Beitrag 1093360)
Ich werde es jetzt mal versuchen.

Gibt es aber auch eine Möglichkeit ohne Outlook?

Nimm doch IMAP das kann der Exchange auch und ist mit Indy kein Problem.

Hast du da ein Beispiel dafür?

franktron 6. Apr 2011 12:45

AW: Exchange Anbindung
 
Hier ein Ausschnitt von einem Prog das Mails von der INBOX Lädt mit Indy 10
Delphi-Quellcode:
If IdIMAP41.Connected then Exit;
   try
      IdIMAP41.Connect(True);
   except
      on E: Exception do
      Begin
         WriteLogFile(E.Message,'Connect');
      End;   
   End;
   try
      If IdIMAP41.SelectMailBox('INBOX') then
      Begin
         IdIMAP41.CheckMailBox;
      End;
      x:=IdIMAP41.MailBox.TotalMsgs;
      For i:=1 to x do
      Begin
         IdMsg.Clear;
         IdIMAP41.Retrieve(i,IdMsg);

mkinzler 6. Apr 2011 12:52

AW: Exchange Anbindung
 
Es geht hier aber um die öffentlichen Ordner

Assarbad 8. Apr 2011 19:25

AW: Exchange Anbindung
 
Wenn du es auf dem Server selber machen willst, kannst du auf das Exchange SDK von MS zurückgreifen. Ansonsten eben die Protokolle benutzen die Exchange beherrscht.

Mit dem SDK hast du alle Informationen um im Exchange Information Store rumzufummeln. Na gut, nicht alle. Die für die VSAPI gibt's nur gegen NDA, aber dann nimmt man halt ein altes SDK wo das noch mit drin war :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz