Domino 9 und frühere Versionen > ND6: Administration & Userprobleme

Alarambenachrichtigung bei MailInDB

(1/2) > >>

jammesbond007:
Hallo alle gemeinsam. Hoffe ihr hattet einen guten Rutsch ins neue Jahr!

Mein kleines Problem:
Ich habe eine MailIn Datenbank. Wenn ich nun einen Termin in dieser DB einstelle und mittels Alarm- und Emailbenachrichtigung an den Besitzer der MailinDatenbank mich erinnern lassen will kommt keine Email an. Dass keine Alarmmeldung kommt versteh ich ja noch (bei wem von den 4 Lesern sollte diese kommen) aber zumindest die Email sollte ja funtkionieren. Andere NotesEmails an diesen Empfänger funktionieren. Nur die Erinnerung an den Termin nicht......

Habt ihr eine Idee?

Danke!

Hive:
Das hatten wir vorhin gerade .. E-Mail Alarmbenachritigungungen funktionieren nur bei Datenbanken die im Client geöffnet sind .. weil der Client die Benachrichtigung prüft und ggf Email versendet ..

Es gibt aber einen kleinen Workarround .. den muss ich mal herraussuchen ..

KAI

edit: gefunden!

Also hier der Code (ein Agent, der mehrmals am Tag läuft) .. Error-handling fehlt (gibt genug threads in denen ein geeignetes errorhandling steht) noch und den Code hab ich mir seit Jahren nicht mehr angeschaut .. aber funktionieren sollte er ..




--- Code: ---Sub Initialize
On Error Goto errhandle

Dim s As New NotesSession
Dim db As NotesDatabase ' beliebige Mail-In DB
Dim userdb As  NotesDatabase ' User Mailfile
Dim view As NotesView ' ($Alarm) Ordner
Dim doc As NotesDocument ' Alarm - Dokument (Termin, Meeting, Erinnerung etc. mit Erinnerungs-Option)
Dim userdoc As NotesDocument ' syncrones Alarm - Dokument beim User
Dim agent As NotesAgent ' Ich
Dim lasttime As Variant ' das letzte mal als ich lief
Dim reg As New NotesRegistration ' Domino Directory Information
Dim anames As Variant ' Liste aller die alarmiert/erinnert werden sollen
Dim acl As NotesACL

Set agent = s.CurrentAgent
Set db = s.CurrentDatabase
' der Agend soll nur zentral auf dem Adminserver arbeiten; sonst könnte es zu doppelten Einträgen kommen
'If Not agent.ServerName = db.ACL.AdministrationServer Then Exit Sub

' Unter ($Alarms) befinden sich alle Alarme, sowohl die mit Sound- als auch eMail-Benachrichtigung
Set view = db.GetView( "($Alarms)" )
Set doc = view.GetFirstDocument

' reg as NotesRegistration dient zum herrausfinden der Usermailfiles hier wir der Notes Domain Controler festgelegt in dem der User geprüft wird
reg.RegistrationServer = db.ACL.AdministrationServer
lasttime = agent.LastRun

While Not(doc Is Nothing)
'Nur Dokumente die seit dem letzen Agentlauf geändert/erstellt wurden müssen bearbeitet werden
If lasttime < doc.LastModified Then
'AlarmSendTo speziefiziert den Empfänger ein Alarm Email / Erinnerung
anames = doc.GetItemValue("$AlarmSendTo")

Forall x In anames
' get UserInfo erwarten bei x einen FQN und gibt über die Konstanten mailserver$, mailfile$ Server und Mailfile der Person X zurück
Call reg.GetUserInfo(x, mailserver$, mailfile$)
Set userdb = New NotesDatabase(mailserver$, mailfile$)
If Not userdb.IsOpen Then Call userdb.Open("","")

'Es wird versucht einen syncronisierten Alarm zu suchen, wenn das nicht gelingt wird zu IngnoreNonexistentUNID gesprungen
Set userdoc = userdb.GetDocumentByUNID(doc.UniversalID)
continue:
'Die zentrale Mail-In Datenbank ist Master dieser Alarme deswegen wird nur gepush (überschrieben)
Call doc.CopyAllItems(userdoc,True)

' der Alarm Deamon der Usr würde an alle Personen in $AlarmSendTo Mail versenden dies würde schon durch diesen Agenten erledigt.
' dewegen wird das feld gelöscht
Call userdoc.ReplaceItemValue("$AlarmSendTo",x)
Call userdoc.Save(True, False)
userdoc.PutInFolder("($Alarms)")
End Forall

End If
'nächster Alarm
Set doc = view.GetNextDocument(doc)
Wend

  Exit Sub

'~~~ Catch da Bug ~~~~~

  errhandle:
  Select Case Err
 
  Case 1001 :
    Print “Error” & Error$
    Exit Sub
 
  Case 4091 :  'Error = ERR_NOTES_BAD_UNID
' hierher wird gesprungen wenn kein syncronisierter Alarm gefunden werden konnte
' es muss ein neues synconisiertes (gleiche UNID) Dokument angelegt werden
    Set userdoc = userdb.CreateDocument()
    userdoc.UniversalID = doc.UniversalID
    Resume continue

  Case Else
      Print “Error” & Str(Err) & “ in Line " & Str(Erl) & “ : " & Error$
      Exit Sub

  End Select

End Sub

--- Ende Code ---

edit2: das funktioniert bei uns .. aber den Agent einzusetzten empfehle ich  nur dann wenn man genau weiß was jede zeile bedeutet und tut ..

jammesbond007:
...hmmm..... dachte das wäre trivialer, noch dazu weil man das ohne Problem eingeben kann im Benachrichtigungsfenster.....::)

Danke dir auf alle Fälle für den Workaround, werde ihn mal anschauen!

Schönen Tag noch!

mcilly:
Kann das sein, dass der Notes Minder läuft?

jammesbond007:
Auf den PC's wo die DB geöffnet wird? Ja habs auch mit dem Reminder probiert. Mit dem Ergebnis dass es auch nicht funktioniert hat....

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln