Einladung kommt in Outlook als komisches 'Notes-Format' an

  • Einladung kommt in Outlook als komisches 'Notes-Format' an

    Guten Morgen,

    Nun habe ich das nächste Problem...
    Ich mache einen Termin in Notes, und füge eine Person als 'Erforderlich' hinzu, die MS Outlook verwendet. Nun bei Notes funktioniert alles,bis auf das die Person(der Leiter der die Besprechung erstellt hat) es nicht automatisch annimmt. Jedoch bei dem Outlook User kommt der Termin als Mail in einem sehr komischen 'Notes-Format' an. Anbei ein Bildausschnitt. In Notes wird nach dem Bestätigen der Termin auch ganz normal im Kalender eingetragen, doch in Outlook eben nur diese Mail.
    Erst wenn ich in Notes unter Besitzeraktionen den Termin 'Bestätige' kommt eine Sinngemäße Einladung in Outlook, wo ich dann auch akzeptieren bzw. ablehnen kann.
    Auch wenn ich den Termin im Notes lösche, kommt in Outlook ganz normal die Meldung dass der Termin gelöscht wurde.
    Diese erste Mail die versendet wird finde ich sehr fraglich und eigentlich nimmt doch der Ersteller der BEsprechung diese automatisch an oder?

    Nun meine Frage ob jemand dieses Format bekannt ist oder ob dieses Problem schon mal behandelt wurde.



    Viele Grüße
    Lorenz
    Dateien
    • Unbenannt.PNG

      (17,05 kB, 6 mal heruntergeladen, zuletzt: )
  • Sind die Outlook User auf einem eigenen Exchange System oder auf dem Domino Server ?

    Habt ihr ggfls eine Weiterleitung definiert oder setzt zur Outlook Verbindung einen Connector ein ?

    Im Normalfall schickt Notes sobald eine Einladung den Domino per SMTP verlässt eine ganz normale ICS Datei mit, die dann auf Exchange Seite verarbeitet wird.
    ............
  • Hallo taurec,
    danke für deine Antwort!

    Ja die Server laufen auf einem eigenen Exchange System,

    und ja es ist keine Weiterleitung definiert, die Mails werden davor abgefangen und erreichen notes gar nicht mehr.

    Das heißt, dass mein Exchange Server die ics Datei nicht richtig verarbeiten kann und dann diese so darstellt?
    Weil ich meine nach dem ich den Termin als Leiter bei Notes bestätige kommt die Einladung ja richtig an.

    Danke schon mal im voraus

    Lorenz
  • Was heisst: die Mails werden davor angefangen ?
    Die Einladung kommt doch von einem Notes Client und der schickt es über den Domino raus

    Wenn ich im Notes eine Einladung erstelle, dann wird die an den Domino Server geschickt und der verteilt diese dann weiter, z.B. nach Extern oder an einen anderen definierten Server.
    Sofern dies per SMTP geschieht wandelt der Domino die Einladung in eine ICS Datei um.

    Skizzier doch mal wie die Verbindungen genau aussehen und mit welchen protokollen wo kommuniziert wird.

    Vielleicht wird es dann klarer
    ............
  • ja dass die Outlook User keine Weiterleitung haben sondern dass die Mails / Einladungen direkt an Outlook gesendet werden.
    Nun da ich diese Einladung ja per Code verschicke bin ich mir nicht sicher ob dies eine ''ganz normale'' ICS-Datei ist. Deswegen denke ich auch das mein Outlook-Client dies auch nicht richtig verarbeiten kann.

    Wie soll ich die Verbindung skizzieren? :) (Ich hab noch nicht so viel Erfahrung mit Notes)

    Und ja falls dies es ein bisschen genauer macht habe ich hier noch mein Code:



    Brainfuck-Quellcode

    1. Sub Initialize
    2. Dim workspace As New NotesUIWorkspace
    3. Dim uidoc As NotesUIDocument
    4. Dim doc As NotesDocument
    5. Dim server As String
    6. Dim vZeit As String
    7. Dim vZeitA , vZeitE As String
    8. Dim myDate As String
    9. Dim i As Integer
    10. Dim sDatefield As String
    11. Dim did As String
    12. Dim subtext As String
    13. Dim stimerangefield As string
    14. Const vname = "besuchtam"
    15. Dim vdate As Variant
    16. Dim NotesDateRange As NotesDateRange
    17. Dim nid As string
    18. 'Dim dtDateStart As New NotesDateTime ( myDate )
    19. 'Dim dtDateEnd As New NotesDateTime ( myDate )
    20. Set uidoc = workspace.CurrentDocument
    21. Set doc = uidoc.Document
    22. Call WorkSpace.DialogBox("TerminEin",True,True,False,False,False,False,"Eingabe Uhrzeit")
    23. If Hour(doc.vzeit1(0)) < 10 And Hour(doc.vzeit2(0)) < 10 Then
    24. If Left$(doc.VZeit1(0),1) = "0" Then
    25. vzeita = Left$(doc.VZeit1(0),5)
    26. Else
    27. vzeita = Left$(doc.VZeit1(0),4)
    28. End If
    29. If Left$(doc.VZeit2(0),1) = "0" Then
    30. vzeite = Left$(doc.VZeit2(0),5)
    31. Else
    32. vzeite = Left$(doc.VZeit2(0),4)
    33. End If
    34. vZeit = vzeita & "-" & vzeite
    35. End If
    36. If Hour(doc.vzeit1(0)) < 10 And Hour(doc.vzeit2(0)) >= 10 Then
    37. If Left$(doc.VZeit1(0),1) = "0" Then
    38. vzeita = Left$(doc.VZeit1(0),5)
    39. Else
    40. vzeita = Left$(doc.VZeit1(0),4)
    41. End If
    42. vZeit = vzeita & "-" & Left$(doc.VZeit2(0),5)
    43. End If
    44. If Hour(doc.vzeit1(0)) >= 10 And Hour(doc.vzeit2(0)) >= 10 Then
    45. vZeit = Left$(doc.VZeit1(0),5) & "-" & Left$(doc.VZeit2(0),5)
    46. End If
    47. nid = doc.UniversalID
    48. Call Agent_Einladung(doc,vname, nid, Subtext, vzeit)
    49. End Sub
    50. Public Function Agent_Einladung(doc As NotesDocument, sDatefield As String, did As String, SubText As String, sTimeRangeField As String)
    51. Const strMailInDBPfad = "mail/xxxx.nsf"
    52. 'On Error GoTo Myerrorhandler
    53. Dim workspace As New NotesUIWorkspace
    54. Dim session As New NotesSession
    55. Dim db As NotesDatabase
    56. Dim NotesDateRange As NotesDateRange
    57. Dim NotesSession As New NotesSession
    58. Set db = session.CurrentDatabase
    59. Dim NotesDatabaseSource As NotesDatabase
    60. Dim NotesDatabaseTarget As New NotesDatabase( "" , "" )
    61. Dim NotesDocumentSource As NotesDocument
    62. Dim NotesDocumentTarget As NotesDocument
    63. Dim NotesRichTextItem As NotesRichTextItem
    64. Dim vdate As Variant
    65. Dim vZeit As String
    66. Dim vZeitA , vZeitE As String
    67. Dim strDocID As String
    68. 'Call maildb.OpenMail
    69. 'mailfile = maildb.filepath
    70. 'server = maildb.server
    71. 'Dim doc As NotesDocument
    72. 'Set doc = db.GetDocumentByUNID(strDocID)
    73. 'If doc Is Nothing Then
    74. ' Print "ABBRUCH - doc not found"
    75. ' Exit Function
    76. 'End If
    77. '*********************************************
    78. Dim dbMailX As NotesDatabase
    79. Dim docMailX As NotesDocument
    80. Dim rtiMailX As NotesRichTextItem
    81. Dim varStrBody As Variant
    82. Dim arrTeilnehmerListe(2) As Variant
    83. 'Dim ndtStart As NotesDateTime
    84. 'Dim ndtEnde As NotesDateTime
    85. Dim strTimeZone As String
    86. Dim strExcludeFromView(1) As String
    87. Dim Teilnehmerliste As String
    88. Dim Teilnehmerliste2 As String
    89. Dim Teilnehmerliste1 As String
    90. Dim myDate As String
    91. Dim i As Integer
    92. Dim stime As String
    93. Dim etime As String
    94. Set db = Session.CurrentDatabase
    95. Dim uidoc As NotesUIDocument
    96. Dim ws As New NotesUIWorkspace
    97. Set uidoc = ws.currentdocument
    98. Set doc = uidoc.document
    99. strDocID = doc.Universalid
    100. Teilnehmerliste2 = "notesmail@xxxx.com" + "," + "outlookmail@xxxxx.com"
    101. strExcludeFromView(0) = "D"
    102. strExcludeFromView(1) = "S"
    103. 'Daten für Mail/Kalender-DB des Vorstandssekretariats (für TOP-Planung & zu Terminvereinbarungen)
    104. Set dbMailX = session.GetDatabase( "serverx", strMailInDBPfad )
    105. If dbMailX Is Nothing Then
    106. Call dbMailX.Open(db.Server, strMailInDBPfad )
    107. If dbMailX Is Nothing Or Not(dbMailX.IsOpen) Then
    108. Print "ABBRUCH - dbMailX not found"
    109. Exit Function
    110. End If
    111. End If
    112. ' Termineinladung...................
    113. Set docMailX = New NotesDocument(dbMailX)
    114. docMailX.Form = "Appointment"
    115. docMailX.From = session.UserName
    116. docMailX.AppointmentType = "3"
    117. docMailX.Subject = "Besprechnungsbeispiel"
    118. Set rtiMailX = New NotesRichTextItem( docMailX, "Body" )
    119. Call rtiMailX.AddNewline(2, False)
    120. Call rtiMailX.AppendText("Folgende Besprechung soll geplant werden … usw." )
    121. Call rtiMailX.AddNewline(1)
    122. Call rtiMailX.Compact
    123. docMailX.Location = "ABC"
    124. docMailX.Chair = session.UserName
    125. docMailX.AltChair = session.UserName
    126. docMailX.Principal = session.UserName
    127. docMailX.~$AltPrincipal = session.UserName
    128. 'Set ndtStart = New NotesDateTime( myDate )
    129. 'Set ndtEnde = New NotesDateTime( myDate)
    130. Dim dtDateStart As New NotesDateTime ( myDate )
    131. Dim dtDateEnd As New NotesDateTime ( myDate )
    132. If sTimeRangeField = "" Then
    133. sTimeRangeField = "07:00-08:00"
    134. End If
    135. 'Set NotesDatabaseSource = NotesSession.CurrentDatabase
    136. Set NotesDateRange = NotesSession.CreateDateRange( )
    137. 'Set NotesDocumentTarget = NotesDatabaseTarget.CreateDocument
    138. 'Set NotesDocumentSource = NotesDatabaseSource.GetDocumentByUNID( strDocID )
    139. 'Fehler
    140. vDate = doc.besuchtam(0)
    141. i=0
    142. sTime = Left(sTimeRangeField,5)
    143. eTime = Right(sTimeRangeField,5)
    144. 'ForAll n In vDate
    145. 'sTime = "07:00"
    146. If vDate <> "" Then
    147. NotesDateRange.Text = sTime
    148. dtDateStart.Localtime = vDate + " " + NotesDateRange.StartDateTime.TimeOnly
    149. NotesDateRange.Text = eTime
    150. dtDateEnd.Localtime = vDate + " " + NotesDateRange.EndDateTime.TimeOnly
    151. Set NotesDateRange.StartDateTime = dtDateStart
    152. Set NotesDateRange.EndDateTime = dtDateEnd
    153. If i = 0 Then
    154. Call NotesDatabaseTarget.OpenMail
    155. End If
    156. If Not ( NotesDatabaseTarget.IsOpen ) Then
    157. Error 1001, "Unable to open user mailfile to create a new appointment document - exiting"
    158. End If
    159. strTimeZone = "Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=97$ZN=W. Europe"
    160. 'strTimeZone = -1
    161. Set docMailX.StartDate = NotesDateRange.StartDateTime
    162. Set docMailX.StartDateTime = NotesDateRange.StartDateTime
    163. Set docMailX.StartTime = NotesDateRange.StartDateTime
    164. 'Set docMailX.StartTimeZone = NotesDateRange.StartDateTime
    165. Set docMailX.EndDateTime = NotesDateRange.EndDateTime
    166. Set docMailX.EndDate = NotesDateRange.EndDateTime
    167. Set docMailX.EndTime = NotesDateRange.EndDateTime
    168. 'Set docMailX.EndTimeZone = NotesDateRange.EndDateTime
    169. Set docMailX.CalendarDateTime = NotesDateRange.StartDateTime
    170. End If
    171. ' End ForAll
    172. docMailX.PreventCounter = "1"
    173. docMailX.PreventDelegate = "1"
    174. docMailX.ExcludeFromView= strExcludeFromView
    175. docMailX.~$Alarm = 1
    176. 'docMailX.~$CSVersion = "2"
    177. 'docMailX.~$CSFlags = "c"
    178. docMailX.~$PublicAccess = "1"
    179. docMailX.Alarms = "1"
    180. docMailX.~$HFFlags = "1"
    181. docMailX.~$IconSwitcher = "Meeting"
    182. docMailX.~$TableSwitcher = "Description"
    183. docMailX.~$SMTPKeepNotesItems = "1"
    184. docMailX.SchedulerSwitcher = "1"
    185. docMailX.SequenceNum = 1
    186. docMailX.UpdateSeq = 1
    187. docMailX.WebDateTimeInit = 1
    188. docMailX.SendTo = Split(TeilnehmerListe2,",")
    189. docMailX.EnterSendTo = Split(TeilnehmerListe2,",")
    190. docMailX.RequiredAttendees = Split(TeilnehmerListe2,",")
    191. docMailX.~$BusyPriority = "1"
    192. docMailX.~$NoPurge = NotesDateRange.StartDateTime.LocalTime
    193. docMailX.MailOptions=""
    194. docMailX.tmpWhichList = ""
    195. docMailX.OrgTable = "C0"
    196. docMailX.OrgState = "x"
    197. docMailX.Repeats = ""
    198. docMailX.Resources = ""
    199. docMailX.SaveOptions = ""
    200. Call docMailX.ComputeWithForm(False, False)
    201. 'Call docMailX.Save(True, False)
    202. Call docMailX.Send(False, Split(TeilnehmerListe2,",")) 'Sende Mail"
    203. 'Call workspace.opendatabase("GDEPFL04",strMailInDBPfad,"Calendar", , True , False)
    204. Ende:
    205. Print "End"
    206. 'Agenthilfsdok wird beim nächsten Löschturnus mit gelöscht
    207. doc.DeletionFlag = "X"
    208. Call doc.Save( True, False)
    209. Exit Function
    210. Myerrorhandler:
    211. Print "Error: " & Error$ & " (" & CStr(Err) & ") - Line: " & CStr(Erl)
    212. Resume Ende
    213. End Function
    Alles anzeigen
  • Also direkt an Outlook wirst du die Einladung sicher nicht senden, denn Outlook ist nur ein Client und kein Server.

    Und die Verbindungen haben mit Notes erst mal wenig zu tun, sondern wie eure Infrastruktur aufgebaut ist.

    Funktioniert der Termin denn wenn du ihn an einen Notes User schickst und dieser die Einladung mit Notes öffnet ?
    Dann sollte es auch mit Outlook gehen wenn die Verbindungen richtig sind.
    ............
  • Lies Dir bitte das Domino Calendaring & Scheduling Schema (zu finden hundertfach in diesem und dem atnotes- Forum oder mit einer Suchmaschine Deiner Wahl) durch, da siehst Du, dass Dein Code zum Versenden gültiger Einladungen völlig ungeeignet bist (auch wenn der Domino- Server so nett ist, das für Dich grade zu biegen): Man versendet kein Dokument vom Typ "Appointment", sondern eine "Notice". Das Appointment erstellt man in der Datenbank des Einladenden, das Notice-Dokument, das man versendet ist ein Antwortdokument auf das Appointment.... und dann kümmert sich auch der Domino drum, dass da ein sauberes ICS draus gemacht wird...
    Torsten
  • Hallo Taurec, hallo Tode,

    danke für eure Antworten,
    @taurec Unser Outlook läuft über einen Exchange Server und wenn ich die Einladung an einen Notes User schicke ist genau das gleiche das wenn ich eben dann als Ersteller den Termin 'Bestätige' kommt auch dort die Einladung richtig an.

    @Tode Das Domino C&S Schema habe ich schon gedownloaded und durchgelesen habe dort aber nicht so viel daraus entnehmen können. Hauptsächlich mit Zeit & Datum hat es mir weiter geholfen jedoch dies mit den Besitzeraktionen habe ich nicht gefunden. Nun werde ich mir die Sache mit der Notice mal anschauen und hoffe das es dann klappt.

    Vielen Dank für eure Geduld!

    Lorenz
  • Ich bin langsam etwas verwirrt ob deiner Beschreibung.

    Erst schreibst du daß du einen Termin erstellst und dann eine Person als erforderlich hinzufügst: Das wäre eine ganz normale Kalenderaktion und braucht keinen eigenen Code, sondern ist Standard.

    Da kann dann eine falsche/fehlende Konvertierung Richtung ICS nur an der Config oder irgendwelchen Zwischenstationen liegen.

    Dann lieferst du einen Code, der einen Termin erstellt. Dafür ist er auch korrekt, aber du willst ja jemanden zu einem bestehenden Termin einladen, also geht es um eine Einladung. Und dafür bemerkt Tode ganz zurecht, daß alleine schon die Form dafür falsch gewählt ist (siehe auch Seite 32 bzw 34 im von Tode genannten Dokument)

    Besitzeraktionen wirst du dort auch nicht finden, denn diese sind eine Frontendaktion, die dann entsprechende Dokumente mit definierten Inhalten wie im Dokument beschrieben, erzeugt.

    Bitte beschreib doch mal genau was du erreichen willst und was du bisher schon wie getan hast.
    ............