当使用mail.jar使用smtp服务器时,invite.ics是正确的,在这种情况下,它使用内部路由域并应该设置文档上的所有数据,然后我们会认为domino要转换和将正常邮件发送到外部地址。
我只有LotusScript代码,但很容易将其转换为java。
Dim invitation As NotesDocument
Dim item As NotesItem
Dim startdttm As NotesDateTime
Dim enddttm As NotesDateTime
Dim rtitem As NotesRichTextItem
Dim prompt As String
Dim language As String
Dim tasktype As String
Dim tmpItem As NotesItem
'Compute SendTo and CopyTo items
Dim SendTo$, CopyTo$
SendTo$ = "test@domain.com"
CopyTo$ = ""
language = "en"
Set invitation = New NotesDocument( taskdoc.ParentDatabase )
With invitation
.ReplaceItemValue "$AltPrincipal", "Automatic Notification "
.ReplaceItemValue "$CSVersion", "2"
.ReplaceItemValue "$CSWISL", Evaluate({@Explode("$S:1;$L:1;$B:1;$R:1;$E:1;$W:1;$O:1;$M:1;RequiredAttendees:1;INetRequiredNames:1;AltRequiredNames:1;StorageRequiredNames:1;OptionalAttendees:1;INetOptionalNames:1;AltOptionalNames:1;StorageOptionalNames:1"; ";")})
.ReplaceItemValue "$HFFlags", "1"
.ReplaceItemValue "$IconSwitcher", "Meeting"
.ReplaceItemValue "$Mailer", "FL Mailer 1.0"
.ReplaceItemValue "$MiniView", "1"
.ReplaceItemValue "$NameLanguageTags", "en"
.ReplaceItemValue "$PublicAccess", "1"
.ReplaceItemValue "$SMTPKeepNotesItems", "1"
.ReplaceItemValue "$StorageCc", ""
.ReplaceItemValue "$StorageTo", "1"
.ReplaceItemValue "$TableSwitcher", "Description"
.ReplaceItemValue "$WatchedItems", Evaluate({@Explode("$S;$L;$B;$R;$E;$W;$O;$M;RequiredAttendees;INetRequiredNames;AltRequiredNames;StorageRequiredNames;OptionalAttendees;INetOptionalNames;AltOptionalNames;StorageOptionalNames"; ";")})
.ReplaceItemValue "AltChair", "Automatic Notification "
.ReplaceItemValue "AltCopyTo", ""
.ReplaceItemValue "AltRequiredNames", SendTo$
.ReplaceItemValue "AltSendTo", SendTo$
.ReplaceItemValue "AppointmentType", "3"
.ReplaceItemValue "ApptUNID", .UniversalID
.ReplaceItemValue "Broadcast", "1"
.ReplaceItemValue "Categories", ""
.ReplaceItemValue "Chair", "Notifiche Automatiche"
.ReplaceItemValue "CopyTo", CopyTo$
.ReplaceItemValue "CWeSigProcessed", "Y"
.ReplaceItemValue "Encrypt", "0"
.ReplaceItemValue "DisplayCopyTo_Icon", "1"
.ReplaceItemValue "Form", "Notice"
.ReplaceItemValue "Importance", "2"
.ReplaceItemValue "InetCopyTo", CopyTo$
'.ReplaceItemValue "INetFrom", "Automatic Notification"
.ReplaceItemValue "INetRequiredNames", SendTo$
.ReplaceItemValue "INetSendTo", SendTo$
.ReplaceItemValue "IsBroadcast", "0"
.ReplaceItemValue "NoticeType", "I"
.ReplaceItemValue "OnlinePlace", ""
.ReplaceItemValue "OrgTable", "C0"
.ReplaceItemValue "PreventCounter", "1"
.ReplaceItemValue "PreventDelegate", ""
.ReplaceItemValue "Principal", "Automatic Notification "
.ReplaceItemValue "RequiredAttendees", SendTo$
.ReplaceItemValue "ReturnReceipt", ""
.ReplaceItemValue "SchedulerSwitcher", "1"
.ReplaceItemValue "SendTo", SendTo$
.ReplaceItemValue "SequenceNum", 1
.ReplaceItemValue "Sign", ""
.ReplaceItemValue "StorageequiredNames", "1"
.ReplaceItemValue "STRecordMeeting", ""
.ReplaceItemValue "Subject", "Broadcast: " + taskdoc.nome(0)
.ReplaceItemValue "Topic", taskdoc.nome(0)
.ReplaceItemValue "UpdateSeq", 1
.ReplaceItemValue "WebDateTimeInit", "1"
.ReplaceItemValue "_ViewIcon", 133
End With
Dim tmpDate As NotesDateTime
Dim itemData As NotesItem
Dim itemOra As NotesItem
Dim itemTemp As NotesItem
Dim appDescription As NotesRichTextItem
Set tmpDate = New NotesDateTime(itemData.Datetimevalue.DateOnly + " " + itemOra.Datetimevalue.TimeOnly)
Call invitation.Replaceitemvalue("CalendarDateTime", tmpDate)
Call invitation.Replaceitemvalue("StartDateTime", tmpDate)
Call invitation.Replaceitemvalue("StartTimeZone", "Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=97$ZN=W. Europe") ' FIX WITH CORRECT TIME ZONE
Set tmpDate = New NotesDateTime(itemData.Datetimevalue.DateOnly + " " + itemOra.Datetimevalue.TimeOnly)
Call tmpDate.AdjustHour( 1 , True )
Call invitation.Replaceitemvalue("EndDateTime", tmpDate)
Call invitation.Replaceitemvalue("EndTimeZone", "Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=97$ZN=W. Europe") ' FIX WITH CORRECT TIME ZONE
Set tmpDate = New NotesDateTime(itemData.Datetimevalue.DateOnly + " " + itemOra.Datetimevalue.TimeOnly)
Call tmpDate.SetAnyTime
Set itemTemp = invitation.Replaceitemvalue("EndDate", "")
Set itemTemp.DateTimeValue = tmpDate
Set tmpDate = New NotesDateTime(itemData.Datetimevalue.DateOnly + " " + itemOra.Datetimevalue.TimeOnly)
Call tmpDate.AdjustHour( 1 , True )
Call tmpDate.SetAnyDate
Set itemTemp = invitation.Replaceitemvalue("EndTime", "")
Set itemTemp.DateTimeValue = tmpDate
' NoPurge
invitation.ReplaceItemValue "$NoPurge", invitation.StartDateTime
'Send the invitation and save ApptUNID on the task doc
Call Invitation.Send(False)
If taskdoc.ApptUNID(0) = "" Then
TaskDoc.ApptUNID = invitation.UniversalID
Call TaskDoc.Save(True, False)
End If