|
Registriert seit: 12. Nov 2013 7 Beiträge |
#1
Hallo Forum!
Ich versuche nun die letzten 3 Nächte mit den Indy-Komponenten eine Besprechungsanfrage für Outlook/Lotus Notes zu generieren. Dies klappt leider nicht so wie ich es mir wünschen würde. In Outlook erhalte ich eine Mail, mit einem Anhang "*.ics" nach einem Doppelklick, wird dieser dann als Termin importiert. In Lotus Notes wird der gleiche Termin als "ungültiger" Anhang gewertet. Das Problem dürfte darin liegen, dass ich den "text/calendar" Content nicht an die richtige Stelle bringe bzw. nicht richtig verschlüssele (MIME?). Ich habe allerdings nicht so ganz viel Ahnung von IdMessage und Co. Mein Code:
Delphi-Quellcode:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, IdPOP3, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, IdSMTP, StdCtrls, ComCtrls, Grids, IdMessage, IdIOHandler, IdCoder3to4, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdSASLLogin, IdSASLExternal, IdUserPassProvider, IdSASL_CRAM_MD5, IdSASL_CRAM_SHA1, IdSASLPlain, IdSASLSKey, IdSASLOTP, IdSASLAnonymous, IdAttachment, IdGlobal, IdSASLUserPass, IdSASLDigest, IdText, IdCoderMIME, IdCoder, IdAttachmentFile, IdAttachmentMemory; type TCalendarData = class cdHost: string; //Strato: smtp.strato.de cdAccount: string; //Mr. T's Mailaccount cdPort: integer; //Strato: 465 or 587 cdUseTLS: integer; cdSSLConnection: boolean; //Strato: True cdTransferEmail: string; //Strato: you@youraccout.de cdUser: string; //Strato: you@youraccout.de cdPass: string; //Strato: Strato Password cdOrganizer: string; //Organisator cdAttendee: string; //Empfänger cdAppointmentStart: TDateTime; //Anfang Termin cdAppointmentEnd: TDateTime; //Ende Termin cdSummary: string; //Betreff cdLocation: string; //Ort cdBody: TStringList; //Body cdDescription: string; //Beschreibung cdPriority: TIdMessagePriority; //Prioriät constructor Create; destructor Destroy; override; end; var Form1: TForm1; implementation {$R *.dfm} constructor TCalendarData.Create; begin inherited; cdBody := TStringList.Create; end; destructor TCalendarData.Destroy; begin cdBody.Free; inherited; end; procedure SendCalendarRequest(CD: TCalendarData); var IdMessage: TIdMessage; SMTP: TIdSMTP; SSLHandler: TIdSSLIOHandlerSocketOpenSSL; IdUserPassProvider: TIdUserPassProvider; IdSASLCRAMMD5: TIdSASLCRAMMD5; IdSASLCRAMSHA1: TIdSASLCRAMSHA1; IdSASLPlain: TIdSASLPlain; IdSASLLogin: TIdSASLLogin; IdSASLSKey: TIdSASLSKey; IdSASLOTP: TIdSASLOTP; IdSASLAnonymous: TIdSASLAnonymous; IdSASLExternal: TIdSASLExternal; MemoryStream: TMemoryStream; Attachment: TIdAttachment; begin MemoryStream := TMemoryStream.Create(); IdMessage := TIdMessage.Create(nil); try with IdMessage, cd do begin AttachmentEncoding := 'mime'; ContentTransferEncoding := 'base64'; //ContentTransferEncoding := '7-bit'; Encoding := meMIME; ContentType := 'text/html'; Charset := 'utf-8'; From.Name := cdAccount; From.Address := cdOrganizer; Recipients.EMailAddresses := cdAttendee; Priority := cdPriority; Body.Text := ''; //Body.AddStrings(cd.cdBody); Attachment.ContentType:='text/calendar';//set the content type to text/calendar // Attachment := TIdAttachment.Create(IdMessage.MessageParts, cdBody.ToString); end; //with IdMessage, md SMTP := TIdSMTP.Create(nil); try if 1=1 then //CD.edSSLConnection begin SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(SMTP); with SSLHandler do begin MaxLineAction := maException; SSLOptions.Method := sslvTLSv1; SSLOptions.Mode := sslmClient; SSLOptions.VerifyMode := []; SSLOptions.VerifyDepth := 0; end; //with SSLHandler SMTP.IOHandler := SSLHandler; SMTP.UseTLS := utUseImplicitTLS; //utUseExplicitTLS; end; if (cd.cdUser <> '') or (cd.cdPass <> '') then begin SMTP.AuthType := satSASL; IdUserPassProvider := TIdUserPassProvider.Create(SMTP); IdUserPassProvider.Username := cd.cdUser; IdUserPassProvider.Password:= cd.cdPass; IdSASLCRAMSHA1 := TIdSASLCRAMSHA1.Create(SMTP); IdSASLCRAMSHA1.UserPassProvider := IdUserPassProvider; IdSASLCRAMMD5 := TIdSASLCRAMMD5.Create(SMTP); IdSASLCRAMMD5.UserPassProvider := IdUserPassProvider; IdSASLSKey := TIdSASLSKey.Create(SMTP); IdSASLSKey.UserPassProvider := IdUserPassProvider; IdSASLOTP := TIdSASLOTP.Create(SMTP); IdSASLOTP.UserPassProvider := IdUserPassProvider; IdSASLAnonymous := TIdSASLAnonymous.Create(SMTP); IdSASLExternal := TIdSASLExternal.Create(SMTP); IdSASLLogin := TIdSASLLogin.Create(SMTP); IdSASLLogin.UserPassProvider := IdUserPassProvider; IdSASLPlain := TIdSASLPlain.Create(SMTP); IdSASLPlain.UserPassProvider := IdUserPassProvider; SMTP.SASLMechanisms.Add.SASL := IdSASLCRAMSHA1; SMTP.SASLMechanisms.Add.SASL := IdSASLCRAMMD5; SMTP.SASLMechanisms.Add.SASL := IdSASLSKey; SMTP.SASLMechanisms.Add.SASL := IdSASLOTP; SMTP.SASLMechanisms.Add.SASL := IdSASLAnonymous; SMTP.SASLMechanisms.Add.SASL := IdSASLExternal; SMTP.SASLMechanisms.Add.SASL := IdSASLLogin; SMTP.SASLMechanisms.Add.SASL := IdSASLPlain; end else begin SMTP.AuthType := satNone; end; SMTP.Host := cd.cdHost; SMTP.Port := cd.cdPort; SMTP.ConnectTimeout := 30000; SMTP.UseEHLO := True; SMTP.Connect; try SMTP.Send(IdMessage); finally SMTP.Disconnect; end; //try..finally finally SMTP.Free; end; //try..finally finally MemoryStream.Free; IdMessage.Free; end; //try..finally end; //SendCalendarRequest begin //Sende Besprechungseinladungen cd := TCalendarData.Create(); with cd do begin cdHost := Edit3.Text; cdAccount := 'Auto Calendar'; //Mr. T's Mailaccount cdPort := StrToInt(Edit6.Text); //Strato: 465 or 587 cdUseTLS := Combobox1.ItemIndex; cdSSLConnection := True; //Strato: True cdTransferEmail := Edit2.Text; //Strato: you@youraccout.de cdUser := Edit4.Text; //Strato: you@youraccout.de cdPass := Edit5.Text; //Strato: Strato Passwort cdOrganizer := 'calendar@xyz.de'; //Organisator cdAttendee := 'empfaenger@xyz.de'; //Empfänger cdAppointmentStart := Now; //Anfang Termin cdAppointmentEnd := Now+0.1; //Ende Termin cdSummary := 'Besprechung Meier (wwewe)'; //Betreff cdLocation := 'Büro XY'; //Ort cdDescription := 'Dies ist ein Text;'; //Beschreibung cdPriority := mpNormal; //Prioriät with cdBody do begin Add('BEGIN:VCALENDAR'); Add('VERSION:1.0'); Add('BEGIN:VEVENT'); Add('ATTENDEE:' + cdAttendee); Add('ORGANIZER:MAILTO:' + cdOrganizer); Add('DTStart:' + FormatDateTime('YYYYMMDD', cdAppointmentStart) + 'T' + FormatDateTime('HHMMSS', cdAppointmentStart) + 'Z'); Add('DTEnd:' + FormatDateTime('YYYYMMDD', cdAppointmentEnd) + 'T' + FormatDateTime('HHMMSS', cdAppointmentEnd) + 'Z'); Add('LOCATION:' + cdLocation); Add('UID:LeanCredit.de'); Add('SUMMARY:' + cdSummary); Add('DESCRIPTION:' + cdDescription); Add('PRIORITY:5'); Add('END:VEVENT'); Add('END:VCALENDAR'); end; //cdBody end; //cd SendCalendarRequest(cd); end. |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |