Einladungsporzess Outlook

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Einladungsporzess Outlook

    Hallo, ich bin neu hier und habe so gut wie keine Ahnung von LN :D

    Habe vollgendes Problem. Möchte die Zeit und das Datum über eine Maske einlesen und dann automatisch
    eine Mail an die Person schicken.Ich hoffe ihr wisst was ich meine. Wenn dieses Thema schonmal besprochen wurde gerne melden :)

    Ich hab hier mal meinen Code:

    Quellcode

    1. Private const VCALENDAR = |BEGIN:VCALENDAR
    2. X-LOTUS-CHARSET:UTF-8
    3. VERSION:2.0
    4. PRODID:-//Lotus Development Corporation//NONSGML Notes 7.0//EN
    5. METHOD:REQUEST
    6. BEGIN:VTIMEZONE
    7. TZID:W. Europe
    8. BEGIN:STANDARD
    9. DTSTART:19501029T020000
    10. TZOFFSETFROM:+0200
    11. TZOFFSETTO:+0100
    12. RRULE:FREQ=YEARLY;BYMINUTE=0;BYHOUR=2;BYDAY=-1SU;BYMONTH=10
    13. END:STANDARD
    14. BEGIN:DAYLIGHT
    15. DTSTART:19500326T020000
    16. TZOFFSETFROM:+0100
    17. TZOFFSETTO:+0200
    18. RRULE:FREQ=YEARLY;BYMINUTE=0;BYHOUR=2;BYDAY=-1SU;BYMONTH=3
    19. END:DAYLIGHT
    20. END:VTIMEZONE
    21. BEGIN:VEVENT
    22. DTSTART;TZID="W. Europe": | & Startgesamt |
    23. DTEND;TZID="W. Europe":| & Endgesamt |
    24. TRANSP:OPAQUE
    25. DTSTAMP:20111207T192505Z
    26. SEQUENCE:0
    27. ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED
    28. ;CN="Lorenz Faber/DE/GEBERIT";RSVP=FALSE
    29. :mailto:lorenz.faber@geberit.com
    30. ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE
    31. :mailto:lorenz.faber@geberit.com
    32. CLASS:PUBLIC
    33. SUMMARY:Testerminh
    34. ORGANIZER;CN="Lorenz Faber/DE/GEBERIT":mailto:lorenz.faber@geberit.com
    35. UID:0DDCB88622E1298CC125795F006A9DA1-Lotus_Notes_Generated
    36. X-LOTUS-BROADCAST:FALSE
    37. X-LOTUS-UPDATE-SEQ:1
    38. X-LOTUS-UPDATE-WISL:$S:1;$L:1;$B:1;$R:1;$E:1;$W:1;$O:1;$M:1
    39. X-LOTUS-NOTESVERSION:2
    40. X-LOTUS-NOTICETYPE:I
    41. X-LOTUS-APPTTYPE:3
    42. X-LOTUS-CHILD_UID:0DDCB88622E1298CC125795F006A9DA1
    43. END:VEVENT
    44. END:VCALENDAR
    45. |
    46. '/**
    47. ' * Diese Klasse dient zum Erstellen von Multipart-Related Mime-Items
    48. ' * @author: Roland Praml/01/int/FOCONIS
    49. ' */
    50. Public Class MultipartRelatedMime
    51. Private doc As NotesDocument
    52. Private itemName As String
    53. Private session As NotesSession
    54. Private oldCvtMime As Integer
    55. Private rootMime As NotesMIMEEntity
    56. Private contentMime As NotesMIMEEntity
    57. Private rootheader As NotesMIMEHeader
    58. '/**
    59. ' * Erzeuge ein neues Objekt dieser Klasse. Im Anschluss können mittels
    60. ' * "attach" beliebig viele Attachments angelegt werden. Will man diese
    61. ' * im HTML anzeigen, so muss man sich den Rückgabewert von Attach merken
    62. ' * und als srv-URL im IMG-Tag verwenden (siehe Beispiel)
    63. ' * @param doc das Dokument, auf dem das MIME-Processing statt findet
    64. ' * @param itemName das MIME-Item (Normalerweise Body)
    65. ' * @return ein Objekt vom Typ MultipartRelatedMime
    66. ' */
    67. Public Sub New(doc As NotesDocument, itemName As String)
    68. Set me.doc = doc
    69. Me.itemName = itemName
    70. If doc.Hasitem(Itemname) Then ' Sicherheitsprüfung
    71. Error 1000, "The Item " + itemName +" already exists."
    72. End If
    73. Set session = New NotesSession
    74. oldCvtMime = session.convertMime ' alte Einstellung merken
    75. session.convertMime = False ' Konvertierung abschalten
    76. ' -- Anlegegen des Root-Mimes
    77. Dim stream As NotesStream
    78. Set rootMime = doc.CreateMIMEEntity(itemName)
    79. Set stream = session.CreateStream()
    80. Call stream.WriteText("This is a multipart message in MIME format.")
    81. Call rootMime.SetContentFromText(stream, "multipart/alternative", ENC_NONE )
    82. ' anlegen des root headers
    83. Set rootheader = rootMime.CreateHeader("content-class")
    84. Call rootheader.SetHeaderVal("urn:content-classes:calendarmessage")
    85. ' !! Es wird auch gleich ein Dummy-content angelegt, denn wenn man
    86. ' !! das Dokument jetzt speichert, dann wird es korrupt
    87. Set contentMime = rootMime.Createchildentity()
    88. Call stream.truncate()
    89. Call stream.WriteText("empty")
    90. Call contentMime.SetContentFromText(stream, "text/plain", ENC_NONE )
    91. Call stream.Close()
    92. End Sub
    93. '/**
    94. ' * Destruktor, erledigt noch ein paar Aufräumarbeiten.
    95. ' * !! Achtung, danach ist die MIME-Konvertierung wieder aktiviert. !!
    96. ' */
    97. Public Sub Delete
    98. Call closeMime() ' sicherheitshalber nochmals close aufrufen
    99. session.Convertmime = oldCvtMime '
    100. End Sub
    101. '/**
    102. ' * Diese Methode beendet die MIME-Verarbeitung, erst danach darf wieder
    103. ' * auf das Dokument zugegriffen werden.
    104. ' */
    105. Public Function closeMime()
    106. If Not doc Is Nothing Then
    107. Set rootMime = Nothing
    108. Set contentMime = Nothing
    109. Call doc.Closemimeentities(True, itemName)
    110. Set doc = Nothing
    111. End If
    112. End Function
    113. '/**
    114. ' * "attach" hängt eine Datei an das MIME an. Die FileData werden idR.
    115. ' * binär oder base64-codiert übergeben. Gibt man einen Filenamen an,
    116. ' * so erscheint die Datei als Attachment, andernfalls erscheint bei
    117. ' * Bildern, welche im HTML referenziert werden, kein zusätzliches
    118. ' * Attachmentsymbol/"Büroklammer"
    119. ' * @param fileData Die Filedaten
    120. ' * @param encoding Das Enoding, z.B. ENC_BASE64
    121. ' * @param filename Der Dateiname, kann auch leer sein, s.o.
    122. ' * @param contentType z.B.: gif/jpeg
    123. ' * @return content-identifier
    124. ' */
    125. Public Function attach(fileData As NotesStream, encoding As Integer, _
    126. filename As String, ByVal contentType As String) As String
    127. ' -- es wird ein neues Kind angelegt
    128. Dim mimePart As NotesMIMEEntity
    129. Set mimePart = rootMime.CreateChildEntity()
    130. If contentType = "" Then
    131. contentType = "application/octet-stream" ' Default
    132. End If
    133. If filename <> "" Then
    134. ' Wichtig: Dateinamen sollten nicht doppelt vorkommene und
    135. ' dürfen keine Sonderzeichen enthalten. Dies wird hier aber
    136. ' nicht geprüft. Dateiname ggf. nach RFC2047 codieren.
    137. Call mimePart.CreateHeader("Content-Disposition"). _
    138. SetheaderValAndParams({attachment; filename="} +filename + {"})
    139. End If
    140. ' -- eine zufällige Content-ID erzeugen
    141. Dim cid As String
    142. Dim randomGenerator As New NotesDocument(doc.Parentdatabase)
    143. cid = randomGenerator.Universalid+"@mydomain"
    144. Call mimePart.CreateHeader("Content-ID")._
    145. SetheaderValAndParams("<" + cid + ">")
    146. ' -- und die Daten schreiben
    147. Call mimePart.SetContentFromText(fileData, contentType, encoding)
    148. attach = "cid:" + cid
    149. End Function
    150. End Class
    151. '/**
    152. ' * Diese Prozedur erstellt ein neues Dokument, erzeugt mit obiger Klasse ein MIME-Item und versendet das Dokument dann
    153. ' */
    154. Sub Initialize
    155. Dim session As New NotesSession
    156. Dim stream As NotesStream
    157. Dim doc As New NotesDocument(session.Currentdatabase)
    158. Dim cid As String
    159. Dim Startdatum, Enddatum As String
    160. Dim Startgesamt, Endgesamt As String
    161. Dim Jahr, Monat, Tag As String
    162. Dim Startzeit As String
    163. Dim Endzeit As String
    164. Startdatum = (doc.VDatum(0))'Datum & Zeit auslesen
    165. Enddatum = (doc.VDatum(0))
    166. Startzeit = ("T" & doc.VZeit1(0))
    167. Endzeit= ("T" & doc.VZeit2(0))
    168. Startdatum = CStr(Replace(Enddatum,".",""))'Punkte und Kommas entfernen
    169. Enddatum = CStr(Replace(Enddatum,".",""))
    170. Startzeit = CStr(Replace(Startzeit,":",""))
    171. Endzeit= CStr(Replace(Endzeit,":",""))
    172. Jahr = Right(Startdatum,4)'Datum in richtiges Format bringen
    173. Startdatum = CStr (Replace(Startdatum,"2015",""))
    174. Startdatum = CStr (Replace(Startdatum,"2016",""))
    175. Monat = Right(Startdatum,2)
    176. Tag = Left(Startdatum,2)
    177. Startdatum = (Jahr)+(Monat)+(Tag)
    178. Enddatum = Startdatum
    179. Startgesamt = (Enddatum )& (Startzeit)
    180. Endgesamt = (Enddatum) & (Endzeit)
    181. doc.Subject = "Dies ist ein Termin"
    182. Dim mime As New MultipartRelatedMime(doc, "Body") ' Klasse anlegen
    183. Set stream = session.createStream
    184. Call stream.Writetext(VCALENDAR)
    185. cid = mime.attach(stream, ENC_NONE, "", |text/calendar; method=REQUEST; name="subject.ics"|) ' Kalender anhängen und CID merken
    186. Call stream.close()
    187. Call mime.closeMime()
    188. Call doc.send(False,"lorenz.faber@geberit.com") ' Mail senden
    189. End Sub
    Alles anzeigen


    ich hoffe auf schnelle Antwort

    l0ren2 ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von l0ren2 ()

  • Hi,
    danke für deine Antwort.

    ja im Code habe ich ja schon ne Adresse vordefiniert und von wem es geht ist derjenige der die Maske ausfüllt und auf den 'absenden' button drückt. und wenn ich mir selbst ne Einladung sende kommt eben ne fehlerrmeldung. Der fehler liegt galub in Zeile 23 und 24. Weil wenn ich nicht auf die Variable verweise, sondern datum und zeit festlege z. B. 20150229T152700 dann geht es. aber wie mache ich das mit | bei mir klappt das irgendwie nicht :D
    wie gesagt ich arbeite noch nicht so lange mit Lotus Script


    Lorenz
  • Hi,

    Sorry.
    Aber was da steht ist kein Lotus Script.

    Und was genau soll der Agent jetzt eigentlich tun.

    Oeffnet er eine Maske (Kalendereintrag) in dem der Anwender dann noch entsprechende Eingaben machen muss?

    Das Senden erfolgt wie? (hat der Anwender einen von dir erstellten Button zur Verfuegung?)
    Dieser Button "absenden" soll da dein Code dahinter stehen oder meinst du den Button zum "Senden", wenn du in Notes selber einen Kalendereintrag
    (Meeting) erstellst und dann auf "Speichern und Senden" klickst.

    Alles in Allem sieht es fuer mich danach aus, als ob du das Rad neu erfinden willst.


    Andreas
  • Hi,

    ja kein Problem. Ich hab leider die Aufgabe nur bekommen und hab den Code von einem Kollegen bekommen. Keine Ahnung wo her der den hat.

    Ich bin halt leider noch ein Anfänger aber danke dass du dir trotzdem mühe machst und mir zurückschreibst. :)

    also der Code steht für einen Button den der Anwender drückt, dann sollen eben die Zeiten und das Datum eingelesen werden und in die Mail-Einladung verpackt werden.
    und ja so ähnlich wie der 'Speichern und senden'' button.

    und ja wie gesagt habe ich halt noch nicht so viel Ahnung

    Lorenz
  • Und wieso erstellst du nicht einfach ein Notes Dokument vom Typ Appointment, füllst die entsprechenden Felder und versendest das dann ?

    Die Konvertierung nach ICS macht der Domino doch automatisch.

    Außerdem kannst du dir dann die Einladung auch im Client anschauen, ob sie passt.

    Als Hinweis noch: Die notwendigen Felder, die du füllen musst sind im Redbook Calendaring & Scheduling Schema aufgeführt
    ............