Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Email Adresse des Senders über MAPI holen (https://www.delphipraxis.net/61157-email-adresse-des-senders-ueber-mapi-holen.html)

meg91 26. Apr 2006 19:08

Re: Email Adresse des Senders über MAPI holen
 
und wie ist das möglich?
vllt lässt sich Outlook irgendwie nur als Try Iocon oder so starten :?:

marabu 26. Apr 2006 20:16

Re: Email Adresse des Senders über MAPI holen
 
Du könntest Outlook mittels ShellExecuteAndWaitA() starten, wobei du als Parameter SW_MINIMIZE nimmst.

Grüße vom marabu

meg91 26. Apr 2006 21:14

Re: Email Adresse des Senders über MAPI holen
 
und wo bekomm ich den pfad her?
soll ja auf möglichst vielen systmem laufen?

ken_jones 26. Apr 2006 21:41

Re: Email Adresse des Senders über MAPI holen
 
Probier mal das hier, hab leider kein Outlook auf meinem aktuellen System laufen, deshalb keine Garantie.
So sollte aber Outlook auch ohne Pfad gestartet werden können. Es wird versucht, eine laufende Instanz zu finden, und wenns keine gibt eine zu erstellen.

Delphi-Quellcode:
var Outlook: OLEVariant;
begin
  try
   Outlook:=GetActiveOleObject('Outlook.Application') ;
  except
    try
      Outlook:=CreateOleObject('Outlook.Application') ;
    except
      ShowMessage('Outlook nicht installiert');
    end;
  end;
  Outlook := Unassigned;
end;

meg91 27. Apr 2006 14:51

Re: Email Adresse des Senders über MAPI holen
 
funzt leider nicht
dan kommt immer ein "OLeSyserror" Vorgang nicht verfügbar, aber nur wenn Outlook geschlossen is
keine Ahnung was des heissen soll

hab aber jetzt mal Outlook so gestartet und ich denk das, dass auch auf allen Systemen möglich ist
ShellExecute(0,'open','outlook',nil,nil, SW_MINIMIZE);
nur wie kann ich rausfinden ob des nicht schon offen ist?

ken_jones 27. Apr 2006 21:30

Re: Email Adresse des Senders über MAPI holen
 
So etwas könnte klappen:

Delphi-Quellcode:
var
  hOutlook: HWND;
begin
  hOutlook := FindWindow('Outlook', nil);
  if hOutlook = 0 then begin
    // Outlook muss geöffnet werden
  end;
end;
FindWindow findet das Fenster anhand seines Titels. "Outlook" ist hier nur eine Annahme. Musst prüfen, ob das Fenster wirklich Outlook heisst, sonst funktionierts nicht.

ken_jones 27. Apr 2006 21:36

Re: Email Adresse des Senders über MAPI holen
 
Zitat:

Zitat von meg91
funzt leider nicht
dan kommt immer ein "OLeSyserror" Vorgang nicht verfügbar, aber nur wenn Outlook geschlossen is
keine Ahnung was des heissen soll

Hmm, wo kommt dieser Fehler? Es sind alle Exceptions abgefangen... In der IDE? Falls ja, dann wärs die richtige Exception wenn Outlook nicht gestartet ist. Wenn man das Programm dann weiterlaufen lässt, so sollte er in die Except Klausel fallen und eine neue Instanz zu öffnen versuchen.

Keflock 24. Sep 2008 23:05

Re: Email Adresse des Senders über MAPI holen
 
Hallo zusammen,

habe alles schön umgesetzt, es funktioniert, aber wenn im Body mehr als XY Zeichen (viele, genau wie viele es sind weiß ich nicht) vorkommen, so bleibt SG_Ausgabe.Cells[4,i]:=MailItem.Body; leer, denn im MailItem.Body ist nichts drin. Ich habe bereits alle Sting ind WideString in dem Unit MapiService verändert, leider ohne Erfolg.

Was mache ich falsch, wie bekomme ich große Bodys in eine StringGrid?

Danke,
mfg
Kef

Gebhard 6. Mär 2009 08:19

Re: Email Adresse des Senders über MAPI holen
 
Hallo,

ich habe versucht, "DisplayMyMailItems" zu nutzen und bin auf ein Problem beim Befehl "TInBox.Create" getroffen. Kann mir einer helfen?

Ich arbeite mit:
- Delphi 7.0
- Windows XP mit SP2
- Outlook 2002 mit SP3

Ich nutze den Profilnamen "Default". Diesen Namen habe ich aus dem Dialogfeld übernommen, welches sich öffnet, wenn ich ein Mapi.Logon ohne zusätzliche Argumente durchführe.
Trage ich diesen Profilnamen wie im Beispiel als String ein, erhalte ich vom Compiler die Fehlermeldung "[Fehler] Unit1.pas(68): Inkompatible Typen: 'TMapiConnection' und 'String'".

Jetzt bin ich den Umweg über "TMapiConnection.Create" gegangen. Hier ein Auszug aus dem Quellcode

procedure DisplayMyMailItems;
var
...
MapiConnection:TMapiConnection;
...
begin
...
MapiConnection.Create('Default',false);
...
InBox := TInBox.Create(MapiConnection);
try
MailItem := InBox.GetFirst;
while Assigned(MailItem) do
...

Jetzt erzeugt zwar der Compiler eine Exe-Datei, aber der Aufruf der Procedure endet mit der Fehlermeldung
"A connection was successfully made to the MAPI subsystem, however an unknown error occurred locating one of the mailboxes for profile "Button2"."
Interressant ist hier ..."Button2". Hier steht immer der Name des Steuerelementes, mit dem ich die Procedure aufrufe. In diesem Fall mit "TForm1.Button2Click(Sender: TObject);".

Kann mir jemand sagen, was ich falsch mache?

ken_jones 6. Mär 2009 10:32

Re: Email Adresse des Senders über MAPI holen
 
Hab leider aktuell nur Vista mit Outlook 2007 hier am laufen, ein Test wär auf meiner Maschine sinnlos.

Aber eine Frage vorab, heisst dein Profil wirklich "Default"? Guck mal im Outlook unter "Extras" -> "E-Mail Konten..." -> "Vorhandene E-Mail-Konten anzeigen oder bearbeiten" -> Standardkonto auswählen -> "Ändern..." -> "Benutzername"

Verwende mal diesen "Benutzername" als Profilname.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:34 Uhr.
Seite 2 von 3     12 3      

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