Domino 9 und frühere Versionen > ND8: Entwicklung

Besprechung per Script erstellen und nach Outlook mailen

(1/2) > >>

AndreasWegener0815:
Hallo Forum Gemeinde.
Wenn ich direkt einen  Termin im Notes Client erstelle und als "Erforderlich" eine Mail Adresse eines Outlook Users angebe klappt alles bestens. Die Mail kommt an und wird in OL auch direkt als Kalendereintrag erkannt. Im Anhang dieser Mail findet sich ein ical file (*.ics)

Nun erstelle ich einen Besprechungstermin in Notes per Script. Das klappt ohne für Notes auch ohne Probleme.
Leider kommt nur Müll in OL an, wenn ich das erstellte Doc versende.
Es wird nämlich kein .ics File erstellt.
1.Frage
Wie bringe ich Notes dazu in diesem Fall ein .ics automatisch zu erstellen und mit zu senden?
2. Frage
 Gehen wir mal davon aus ich hätte bereits selbst ein .ics File erstellt. (gibt ja genügend Scripts)
Wie binde ich das File korrekt in mein Mail Doc ein? Einfach einw Mail schreiben und als Attachment
das File funktioniert leider auch nicht. (Kommt als normale Mail in OL an)

Denke das hat was mit MIME Format zu tun o.Ä ?

Vielen Dank und Gruß

Andreas

ata:
... wie sieht die Mail im OL denn im Quellcode aus - da kannst du es erkennen, wie die Mail hier tickt. Oder du debuggst dich durch Notes bis zum Versenden - das wäre mein erster Ansatz...

Toni

koehlerbv:
Das beste ist (neben dem reverse engineering), Du erstellst manuell eine entsprechende Einladung - bei angehaltenem Router. Dann fischst Du Dir das Memo aus der MAIL.BOX und analysierst es.

Des Pudels Kern findest Du wirklich (und logischerweise) im Body. Folgender Teil ist hier ganz entscheidend:

"--=_mixed 0DDCB88622E1298CC125795F006A9DA1_=
Content-Type: application/octet-stream; charset="UTF-8"; name="c202505.ics"
Content-Disposition: attachment; filename="c202505.ics"

BEGIN:VCALENDAR
X-LOTUS-CHARSET:UTF-8
VERSION:2.0
PRODID:-//Lotus Development Corporation//NONSGML Notes 7.0//EN
METHOD:REQUEST
BEGIN:VTIMEZONE
TZID:W. Europe
BEGIN:STANDARD
DTSTART:19501029T020000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;BYMINUTE=0;BYHOUR=2;BYDAY=-1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19500326T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;BYMINUTE=0;BYHOUR=2;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DTSTART;TZID="W. Europe":20111208T090000
DTEND;TZID="W. Europe":20111208T100000
TRANSP:OPAQUE
DTSTAMP:20111207T192505Z
SEQUENCE:0
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED
 ;CN="Bernhard Koehler/BKNotes/DE";RSVP=FALSE
 :mailto:ich@domain.de
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE
 :mailto:du@organisation.de
CLASS:PUBLIC
SUMMARY:Testerminh
ORGANIZER;CN="Bernhard Koehler/BKNotes/DE":mailto:ich@domain.de
UID:0DDCB88622E1298CC125795F006A9DA1-Lotus_Notes_Generated
X-LOTUS-BROADCAST:FALSE
X-LOTUS-UPDATE-SEQ:1
X-LOTUS-UPDATE-WISL:$S:1;$L:1;$B:1;$R:1;$E:1;$W:1;$O:1;$M:1
X-LOTUS-NOTESVERSION:2
X-LOTUS-NOTICETYPE:I
X-LOTUS-APPTTYPE:3
X-LOTUS-CHILD_UID:0DDCB88622E1298CC125795F006A9DA1
END:VEVENT
END:VCALENDAR

"

HTH,
Bernhard

AndreasWegener0815:
Hallo Toni, Hallo Bernhard.

Vielen Dank für eure Tipps.

Bernhard ich habe mir auch schon sowas gedacht und mit


--- Code: ---Set body = doc.CreateMIMEEntity
Set header = body.CreateHeader("Type")
Call header.SetHeaderVal(|attachment; filename="test.ics"|)
--- Ende Code ---
experimentiert.

Leider kommt die Mail immer noch als "Mail" und nicht als "Kalendereintrag" an.

Dein log sieht gut aus.

Da drängen sich nun wieder (:-))Fragen auf:

Kann ich in den Body einfach den Text so reinschreiben wie in deinem Log
Oder muss ich wie oben über CreateMIMEEntity etc. gehen?
Wenn ich deinen  Text einfach mit


--- Code: ---Call stream.WriteText("## DEIN LOG###")
Call body.SetContentFromText (stream, "text/plain;charset=UTF-8", ENC_NONE)
--- Ende Code ---
 
in den Body schreibe ist das der richtige weg ?

Viele Grüße
Andreas

AndreasWegener0815:
So nach etlichen Versuchen  gebe ich es nun erst mal auf.

Der untenstehende Code sendet nun eine Einladung nach Outlook o.Ä.
Leider wird diese nicht direkt als Termin erkannt.

Man muss die Mail erst öffnen und auf das ICS File doppelklicken.
Der Rest wird brav erkannt.

Zeit und Ort sind noch hart Codiert, sollte aber kein Problem sein hier Variablen einzusetzen.

Wenn jemand noch eine Idee hat freue ich mich über Tipps.

Viele Dank allen für die Hilfe

Viele Grüße
Andreas


--- Code: ---Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim body As NotesMIMEEntity

Dim header As NotesMIMEHeader

Dim stream As NotesStream

Set db = s.CurrentDatabase
Set stream = s.CreateStream
s.ConvertMIME = False ' Do not convert MIME to rich text
Set doc = db.CreateDocument
Call doc.ReplaceItemValue("Form", "Memo")
Set body = doc.CreateMIMEEntity

Set header = body.CreateHeader("Subject")
Call header.SetHeaderVal("Ihr Termin")

Set header = body.CreateHeader("To")
Call header.SetHeaderVal("andreas.wegener@cap-it.de")

Set header = body.CreateHeader("Type")
Call header.SetHeaderVal(|text/calendar; method=REQUEST;name="cal.ics"|)
Set header = body.CreateHeader("Content-Disposition")
Call header.SetHeaderVal(|attachment; filename="cal.ics|)
Call stream.WriteText(|BEGIN:VCALENDAR
X-LOTUS-CHARSET:UTF-8
VERSION:2.0
PRODID:-//Lotus Development Corporation//NONSGML Notes 7.0//EN
METHOD:REQUEST
BEGIN:VTIMEZONE
TZID:W. Europe
BEGIN:STANDARD
DTSTART:19501029T020000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;BYMINUTE=0;BYHOUR=2;BYDAY=-1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19500326T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;BYMINUTE=0;BYHOUR=2;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DTSTART;TZID="W. Europe":20111208T090000
DTEND;TZID="W. Europe":20111208T100000
TRANSP:OPAQUE
DTSTAMP:20111207T192505Z
SEQUENCE:0
LOCATION:Conference room
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED
;CN="Hans Wurst/D/Company-EU";RSVP=FALSE
:mailto:hans.wurst@gmx.de
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE
:mailto:hans.wurst@gmx.de
CLASS:PUBLIC
SUMMARY:Testermin
ORGANIZER;CN="Der Organizer":mailto:ich@domain.de
UID:0DDCB88622E1298CC125795F006A9DA1-Lotus_Notes_Generated
X-LOTUS-BROADCAST:FALSE
X-LOTUS-UPDATE-SEQ:1
X-LOTUS-UPDATE-WISL:$S:1;$L:1;$B:1;$R:1;$E:1;$W:1;$O:1;$M:1
X-LOTUS-NOTESVERSION:2
X-LOTUS-NOTICETYPE:I
X-LOTUS-APPTTYPE:3
X-LOTUS-CHILD_UID:0DDCB88622E1298CC125795F006A9DA1
END:VEVENT
END:VCALENDAR
|)

Call body.SetContentFromText (stream, "text/plain;charset=ISO-8859-1", ENC_NONE) 


Call doc.Send(False)
s.ConvertMIME = True ' Restore conversion

End Sub

--- Ende Code ---

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln