Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi 7 auf Outlook 2003 - Sicherheitsabfrage (https://www.delphipraxis.net/66327-delphi-7-auf-outlook-2003-sicherheitsabfrage.html)

vossi 28. Mär 2006 15:15


Delphi 7 auf Outlook 2003 - Sicherheitsabfrage
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich versuche per folgender Funktion E-Mails aus OutLook abzufragen.

Delphi-Quellcode:
procedure CheckMail;
var
  Outlook: _Application;
  Unknown: IUnknown;
  Result: HResult;
  NmSpace: NameSpace;
  Folder: MAPIFolder;
  Mail: MailItem;
  lvAttachment: Attachment;
  i: integer;
begin
  Memo1.Clear;
  Outlook := CoOutlookApplication.Create;
  NmSpace := Outlook.GetNamespace('MAPI');
  NmSpace.Logon('', '', False, False);
  Folder := NmSpace.GetDefaultFolder(olFolderInbox);

  for i := 1 to Folder.Items.Count do
  begin
    Mail := (Folder.Items.Item(i) as MailItem);
    Memo1.Lines.Add('-------------------------------------');
    //Memo1.Lines.Add(Mail.Subject+' from '+Mail.SenderName);
    Memo1.Lines.Add(Mail.Subject);
    Memo1.Lines.Add('');
    Memo1.Lines.Add(Mail.Body);
    if (Mail.Attachments.Count>0) then
    begin
      lvAttachment := (Mail.Attachments.Item(1) as Attachment);
      lvAttachment.SaveAsFile('L:\Daten\MailCheckTest\'+lvAttachment.FileName);
      Memo1.Lines.Add('Attachment saved: '+lvAttachment.FileName);
    end;
    Memo1.Lines.Add('-------------------------------------');
  end;
  Folder.Display;
  Outlook.Quit;
end;
Jedoch bekomme ich wenn ich sachen wie Mail.SenderName oder Mail.Body auslese, die angehängte Abfrage.
Gibt es eine Möglichkeit dies zu umgehen? Bei einem automatisiertem Mailcheck ist es äusserst lästig ewig diese Abfrage wegzuklicken.

tia

JasonDX 28. Mär 2006 15:19

Re: Delphi 7 auf Outlook 2003 - Sicherheitsabfrage
 
Zitat:

Zitat von vossi
Jedoch bekomme ich wenn ich sachen wie Mail.SenderName oder Mail.Body auslese, die angehängte Abfrage.
Gibt es eine Möglichkeit dies zu umgehen? Bei einem automatisiertem Mailcheck ist es äusserst lästig ewig diese Abfrage wegzuklicken.

AFAIK nicht. Es handelt sich hier um einen Sicherheitshinweis - den umgehen zu können würde ihn sinnlos machen ;)
Aber für wie lange kann man den Programmen Zugriff gewähren? Aktivier einfach mal die Checkbox und stell das längstmögliche ein. Vielleicht würde das helfen, nicht ständig die Meldung wegklicken zu müssen ;)

greetz
Mike

dfried 28. Mär 2006 15:26

Re: Delphi 7 auf Outlook 2003 - Sicherheitsabfrage
 
Zitat:

Zitat von JasonDX
Zitat:

Zitat von vossi
Jedoch bekomme ich wenn ich sachen wie Mail.SenderName oder Mail.Body auslese, die angehängte Abfrage.
Gibt es eine Möglichkeit dies zu umgehen? Bei einem automatisiertem Mailcheck ist es äusserst lästig ewig diese Abfrage wegzuklicken.

AFAIK nicht.

AFAIK doch!
Schaust du in diesem Thread nach!
Du musst statt dem "SimpleMAPI" eben "Extended MAPI" verwenden.

generic 29. Mär 2006 04:58

Re: Delphi 7 auf Outlook 2003 - Sicherheitsabfrage
 
ich kann bestaedigen das das geht,
du musst (wenn du exchange nutzt) in einen public folder eine sec.mesg unterbringen welche die dll/programm verlinkt.

leider hab ich vergessen wie es genau geht.

vossi 30. Mär 2006 15:16

Re: Delphi 7 auf Outlook 2003 - Sicherheitsabfrage
 
Vielen Dank für die hilfreichen Antworten .. ich habe die Extended Mapi heruntergeladen und mit dem Mapi Wrapper jetzt im Einsatz doch leider stellt sich hier ein weiteres Problem:

Delphi-Quellcode:
procedure TForm1.bGetMailsClick(Sender: TObject);
var
  InBox: TInbox;
  MailItem: TMapiMailItem;
  lvAttachment: TMapiMailAttachment;
  lvStream: TFileStream;
begin
  InBox := TInBox.Create('Datenimport 1');
  try
    MailItem := InBox.GetFirst;
    while Assigned(MailItem) do begin
      mMails.Lines.Add(Format('From: %s <%s>'#13#10'Subject: %s @ %s'#13#10'%s'#13#10,
                      [MailItem.Sender,
                       MailItem.SenderEmail,
                       MailItem.Subject,
                       DateToStr(MailItem.CreateTime),
                       Copy(MailItem.Body, 1, Min(50, Pos(#13, MailItem.Body)))]));
      if (MailItem.Attachments.Count>0) then
      begin
        lvAttachment := (MailItem.Attachments.Items[0] as TMapiMailAttachment);
        lvStream := TFileStream.Create('L:\Daten\MailCheckTest\'+lvAttachment.FileName,fmCreate);
        lvAttachment.Copy(lvStream);
        lvStream.Free;
        mMails.Lines.Add('-------------------- Attachment saved: '+lvAttachment.FileName+' --------------------');
      end;
      MailItem.Free;
      MailItem := InBox.GetNext;
    end;
  finally
    InBox.Free;
  end;
end;
Funktioniert einwandfrei jedoch kann ich, egal welchen Profilename ich angebe nicht auf die zweite Inbox zugreifen, die vom selben Outlook Server abgefragt wird.
Mit OutlookSpy ( http://www.dimastr.com/outspy/ ) habe ich versucht mehr über den Hintergrund der Folder Struktur und wie ich diese benutzen kann, aber leider bisher erfolglos.

Jemand bisher schon weiter mit Extended MAPI gearbeitet und vllt in der Lage mir weiterzuhelfen? Der Source der ExtendedMAPI ist für mich leider sehr kryptisch und ich bezweifle das ich ihn korrekt um die, meiner Meinung nach, fehlende Folder Funktionalität erweitern kann.

tia.

edit: http://www.delphipraxis.net/internal...=486966#486966 werde ich wohl morgen auch noch ausprobieren sollte ich mit der Extended MAPI keine Fortschritte verzeichnen können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 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