Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: dataspider am 18.07.06 - 19:30:03

Titel: OLE mit Delphi - als gelesen markieren
Beitrag von: dataspider am 18.07.06 - 19:30:03
Hallo,

ich versende aus Delphi Mails. Diese werden im Ordner Gesendet gespeichert und als ungelesen gekennzeichnet.
Gibt es über OLE einen Weg, diese als Gelesen zu markieren?

Ich habe die Klasse mal angehangen.

Das Versenden erfolgt mit:

FNotesMail := TrwNotesMail.Create(Self);
with FNotesMail do
begin
  OnStatusChange := doMailStatusChange;
  Password := '******';
  SendTo   := 'test@domain.de';
  Subject  := 'Test Delphi und Lotus Notes';
  BodyText.Add('Hallo ?');
  AttachFiles.Add('d:\test.rar');
  AttachFiles.Add('d:\test.txt');
  Connect;
  SendMail;
end;


Danke, Frank
Titel: Re: OLE mit Delphi - als gelesen markieren
Beitrag von: koehlerbv am 18.07.06 - 21:08:37
Hallo Frank,

wenn die Bordmittel nicht anschlagen (eigentlich wäre das
Code
//MailItem.Save(True, False, True);
aber das hast Du auskommentiert), dann werden die OLE-Methoden da wohl nicht mitspielen.

Das
Code
MailItem.ReplaceItemValue('MarkRead', True);
ist auf jeden Fall ein untauglicher Versuch, da das nichts mit Notes zu tun hat. Die Ungelesen-Markierungen werden DB-intern verwaltet, und das immer User-bezogen. Muss ja auch so sein.

Hier musste ich wieder schmunzeln:
Code
except
Status := 'Mail konnte nicht gesendet werden...';
// Scheisse
end;
Da zeigt sich wieder, welches die Sprache ist, die der Programmierer wirklich perfekt beherrscht  ;D

Bernhard
Titel: Re: OLE mit Delphi - als gelesen markieren
Beitrag von: dataspider am 19.07.06 - 09:48:17
Hallo Bernhard,

MailItem.Save(True, False, True); speichert bei mir die Mail im Ordner Entwürfe.
Der letzte Parameter heisst MarkRead und hier kann ich angeben, ob die Mail als gelesen markiert wird oder nicht.

MailItem.ReplaceItemValue('MarkRead', True);
Hab ich schon bemerkt, dass es nicht funktioniert. Aber leider kann man auch aus der erzeugten Unit für Delphi nur die Header lesen, aber nicht die gültigen Parameter. Dafür muss ich mich dann sicher durch die Notes - Hilfen wühlen.
Aber da ich recht wenig Erfahrung damit habe, ist es schon mühsam.

Und - verdammt - man sollte doch seine Codeschnipsel zumindest von schnellen Kommentaren bereinigen, bevor man sie öffentlich macht.  ;)

Es ist auch nicht so schlimm, wenn es nicht lösbar ist. Es ist halt nur bei denen, die viele Mails versenden, etwas verwirrend, wenn beim Start von Notes immer eine rote Zahl erscheint, und dann sind gar keine Mails eingegangen.

...auf jeden Fall erst mal - Danke

Frank
Titel: Re: OLE mit Delphi - als gelesen markieren
Beitrag von: LN4ever am 19.07.06 - 12:00:03
Der dritte Parameter im SAVE-Statement gibt mir doch jetzt ein kleines Rätsel auf. In der Hilfe steht:

markRead
Boolean. If True, the document is marked as read. If False (default), the document is not marked as read.

Es gibt zwei Möglichkeiten, wie Notes damit umgeht. Dazu ein kurzer Ausflug zu den Gelesen-Markierungen. Diese Markierungen werden für jeden Benutzer auf Dokumentenebene mitgeführt und bei jeder Änderung des Dokuments verworfen (das Dokument ist nach einem SAVE für Jeden (wieder) ungelesen).

Der dritte Parameter kann nun zwei Ausprägungen haben:
1. nach dem Speichern ist das Dokument für Jeden gelesen
2. die existierende Liste der Gelesen-Markierungen wird nicht verworfen - das Dokument ist für diejenigen, die es gelesen haben, gelesen, für diejenigen, die es noch nicht gelesen haben, weiterhin ungelesen.

Nur der zweite Ansatz macht m.E. Sinn, aber ich frage hier einmal in die Expertenrunde. Wie ist es denn nun ?
Titel: Re: OLE mit Delphi - als gelesen markieren
Beitrag von: Glombi am 19.07.06 - 12:05:24
Meiner Meinung nach auch Punkt 2.

Andreas
Titel: Re: OLE mit Delphi - als gelesen markieren
Beitrag von: ata am 19.07.06 - 13:37:07
... schließe mich an => 2.

Toni
Titel: Re: OLE mit Delphi - als gelesen markieren
Beitrag von: Tode am 19.07.06 - 16:10:48
nach meinen Erfahrungen in R5 ist es Option 3: Das Dokument wird für den AKTUELLEN Benutzer nicht als ungelesen markiert... für alle anderen Benutzer ist das Dokument wieder ungelesen....

unter R5 war es so, dass ungelesen- Markierungen in der Desktop des Benutzers gespeichert wurden, weshalb ein Agent auf einem anderen Client die überhaupt nicht ändern konnte...

Evtl. hat sich ja in R6 der Befehl geändert (schliesslich wurde die Verwaltung der ungelesenen- Markierung komplett überarbeitet...)

P.S.: Habe gerade einen KB- Artikel gefunden, der zeigt: bis 5.0.12 einschliesslich war der Parameter quasi Nutzlos... hier wurde also wirklich was gefixt...Wen's interessiert:
Doc Number: 1095636

Gruß
Tode


ich habe
Titel: Re: OLE mit Delphi - als gelesen markieren
Beitrag von: Semeaphoros am 19.07.06 - 17:57:14
Torsten meint richtig, und in ND6 hat sich das nicht geändert
Titel: Re: OLE mit Delphi - als gelesen markieren
Beitrag von: Glombi am 19.07.06 - 18:12:13
Das sollte man mal mit 2 Usern testen um das zu verifizieren.

Das Feature war jahrelang sowieso nutzlor:

Aus der KBASE:

Fix List for Lotus Notes and Lotus Domino Releases 6.0.5 and 6.5.4 Maintenance Release (MR)

Database   CYII5U535J   SPR# CYII5U535J - In Notes 4.5 and above, the NotesDocument.Save method features a third Boolean parameter which determines whether the saved document will be marked as "read" or "unread". A True value marks the document "read" while a False value marks it as "unread". When you run a LotusScript agent that contains the line "Call Doc.Save(True, False, True)" against documents in a server-based database, the last True value in the parameter list should mark the modified documents as "read". The modified documents, however, may still appear in the database views as "unread". Refreshing or rebuilding the view indices does not correct this inconsistency. The third parameter will work only when you save a new document.

Andreas