AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Email Adresse des Senders über MAPI holen
Thema durchsuchen
Ansicht
Themen-Optionen

Email Adresse des Senders über MAPI holen

Ein Thema von ken_jones · begonnen am 17. Jan 2006 · letzter Beitrag vom 31. Aug 2010
Antwort Antwort
Seite 1 von 3  1 23      
ken_jones

Registriert seit: 16. Mai 2005
Ort: Luzern
154 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Email Adresse des Senders über MAPI holen

  Alt 17. Jan 2006, 17:39
Etwas ganz einfaches und doch so kompliziert...
Ich hab auf meinem System XP und OL2002 installiert. Über MAPI kann ich auf alle Mails zugreifen, die Inhalte holen, etc.
Über SentOnBehalfOfName oder ReplyRecipients komme ich sogar an den Sender er Email ran, SOFERN dieser nicht im Adressbuch steht. Da kommt jetzt mein Problemchen.
Sobald der Sender im Adressbuch steht, ist ReplyRecipients leer und in SentOnBehalfOfName steht nur der Name des Senders drin, nicht aber seine Email Adresse. Warscheinlich muss ich jetzt die Email Adresse aus den Kontakten auslesen oder sowas...

Hat jemand einen Beispielcode zur Hand, wie ich an die Email Adresse des Senders komme? Thx!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Email Adresse des Senders über MAPI holen

  Alt 17. Jan 2006, 18:38
Hi.

Sieht fast so aus, als wärst auch du ein Opfer des OL Object Model Guard - und damit ein Fall für REDEMPTION. Du schreibst zwar MAPI, aber alles deutet daraufhin, dass du die Outlook Automatisierung verwendest.

Grüße vom marabu
  Mit Zitat antworten Zitat
ken_jones

Registriert seit: 16. Mai 2005
Ort: Luzern
154 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

Re: Email Adresse des Senders über MAPI holen

  Alt 17. Jan 2006, 21:25
Danke, stimmt, ich gehe über die "Outlook.Application" Ole, habs aber auch über MAPI versucht. Im Netz finden sich dutzende von Beispielen, aber die meisten taugen nichts, oder bringen denselben Effekt.
Ok, Redemption scheint ein Lösungsansatz zu sein. Behalt ihn mir mal als Notnagel in Gedanken.

Aber wie macht zum Beispiel der Google Desktopsearch den Zugriff? Der liest aus meinem Outlook2002 die Mails inklusive den Senderemailadressen raus, ohne eine Sicherheitsabfrage oder ähnliches zu generieren. Einzige Voraussetzung, Outlook muss gestartet sein. Wenn Google das schafft, müssen wir das doch auch können, oder ned?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Email Adresse des Senders über MAPI holen

  Alt 17. Jan 2006, 21:55
Google wird das wahrscheinlich genauso machen, wie Redemption - über Extended MAPI. Das ist der Weg, den MS empfiehlt, kompromisslos sicher und versionsunabhängig.

marabu
  Mit Zitat antworten Zitat
ken_jones

Registriert seit: 16. Mai 2005
Ort: Luzern
154 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Email Adresse des Senders über MAPI holen

  Alt 17. Jan 2006, 23:42
Yeah, das war das Stichwort! Extended MAPI! Ich depp...

Ich hab mir die neusten MAPI Headers runtergeladen:
MAPI_Headers

Und dann noch die MAPI Services von Evocorp
MAPI Services

Wenn man das ganze nicht als Service ausführen möchte, so muss man noch in den Sources der MAPI Services folgendes ändern:
Bei der Funktion MapiServicesLogOn nur das Flag MAPI_EXTENDED sein lassen, die restlichen löschen.

Und schon kann ich auf alle Daten von Outlook zugreifen, ohne eine Sicherheitsabfrage von Outlook.

Beispielcode:
Delphi-Quellcode:
uses
  MapiServices;
  
procedure DisplayMyMailItems;
var InBox: TInbox;
    MailItem: TMapiMailItem;
begin
  // Insert your actual account name in place
  // of MyAccountName, for instance "Bloggs, Joe"
  InBox := TInBox.Create('MyAccountName');
  try
    MailItem := InBox.GetFirst;
    while Assigned(MailItem) do
    begin
      ShowMessage('From: ' + MailItem.Sender + #13#10 +
                  'Subject: ' + MailItem.Subject);
      // Do what you need to do here
      // ...
      // and then release MailItem.
      MailItem.Free;
      MailItem := InBox.GetNext;
    end;
  finally
    InBox.Free;
  end;
end;
Und wenn man nun mit GetSender (oder MailItem.Sender) lieber die Email statt den Namen haben möchte, so ersetzt man einfach in der GetSender Funktion den Wert PR_SENDER_NAME mit PR_SENDER_EMAIL_ADDRESS.

Das ganze hab ich jetzt aber so schlecht hingeschlurft, dass ich noch kein Codebeispiel von mir uppe. Aber ich säubere mal meinen Code und dann gibts den Code später noch dazu.

Danke marabu, du hast mich auf den richtigen Weg gebracht.
  Mit Zitat antworten Zitat
ken_jones

Registriert seit: 16. Mai 2005
Ort: Luzern
154 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: Email Adresse des Senders über MAPI holen

  Alt 18. Jan 2006, 10:22
So, hier die versprochene Version:

Zuerst die MAPI Headers herunterladen.

Dann, anstelle der MapiServices gibts jetzt die leicht modifizierte MapiWrapper.pas dazu.

Und zum Schluss eine Testunit für das ganze:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    bGetMails: TButton;
    mMails: TMemo;
    procedure bGetMailsClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
uses
  MapiWrap;

procedure TForm1.bGetMailsClick(Sender: TObject);
var
  InBox: TInbox;
  MailItem: TMapiMailItem;
begin
  InBox := TInBox.Create('Doe, John');
  try
    MailItem := InBox.GetFirst;
    while Assigned(MailItem) do begin
      mMails.Lines.Add(Format('From: %s <%s>'#13#10'Subject: %s'#13#10'%s'#13#10,
                      [MailItem.Sender,
                       MailItem.SenderEmail,
                       MailItem.Subject,
                       Copy(MailItem.Body, 1, Min(50, Pos(#13, MailItem.Body)))]));
      MailItem.Free;
      MailItem := InBox.GetNext;
    end;
  finally
    InBox.Free;
  end;
end;

end.
Angehängte Dateien
Dateityp: pas mapiwrap_102.pas (72,6 KB, 272x aufgerufen)
  Mit Zitat antworten Zitat
meg

Registriert seit: 5. Apr 2006
1 Beiträge
 
#7

Re: Email Adresse des Senders über MAPI holen

  Alt 5. Apr 2006, 16:13
hey echt toll was du hier gepostest hast, nur leider kommt bei mir immer eine Fehlermeldung, das ein Fehler beim einloggen in die extended MAPI aufgetreten ist
Soweit ich das gesehen habe hängt das mit dem falschen InBox := TInBox.Create('...'); Eintrag zusammen (also da wo die Punkte sin hab ich wahrscheinlich des falsche reingeschrieben)
Was muss ich da für einen Namen eintragen?

Und wie kann ich da vielleicht eine größere Kombalibilität erreichen, auch ohne diesem Kontonamen oder was immer das ist eintragen zu müssen?

gruß
meg
  Mit Zitat antworten Zitat
ken_jones

Registriert seit: 16. Mai 2005
Ort: Luzern
154 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

Re: Email Adresse des Senders über MAPI holen

  Alt 5. Apr 2006, 21:49
Tja, in was für eine Art Konto versuchst du dich denn einzuloggen? Outlook? Wenn ja, dann ist dort der Login (also der '...' Ersatz) meistens mit dem Kontonamen identisch. Sprich beim User Beat Muster wäre das meistens "Muster, Beat".

Und um den Kontonamen kommst du nicht herum. Schliesslich muss die Extended Mapi ja wissen, wo sie sich anmelden soll.
  Mit Zitat antworten Zitat
Benutzerbild von meg91
meg91

Registriert seit: 25. Apr 2006
131 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Email Adresse des Senders über MAPI holen

  Alt 25. Apr 2006, 19:17
hab das ganze auch mal ausprobiert
nur bei mir muss da Outlook immer an sein sonst kommt ne Fehlermeldung
kann man das auch machen , ohne das Outlook gestartet sein muss?
  Mit Zitat antworten Zitat
ken_jones

Registriert seit: 16. Mai 2005
Ort: Luzern
154 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

Re: Email Adresse des Senders über MAPI holen

  Alt 25. Apr 2006, 22:32
Da begebe ich mich jetzt auf dünnes Eis, aber ich behaupte mal, dass ohne laufendes Outlook kein Zugriff per Extended Mapi möglich ist. imho stellt Outlook selber die Ressourcen für Login, Abruf, etc. zur Verfügung. GDS (GoogleDesktopSearch) verlangt ebenfalls, dass die Standardmailapplikation gestartet sein muss. Wohl nicht ohne Grund.
Was aber sicher möglich ist, wäre das automatische starten von Outlook vor dem Zugriff.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 Uhr.
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