VB.NET中为Outlook AppointmentItem添加参会者的问题
解决VB.NET中Outlook AppointmentItem设置RequiredAttendees的错误
你碰到的这个报错核心原因很简单:RequiredAttendees是一个字符串属性,不是可调用的方法,所以不能用(邮箱地址)的方式传参,直接赋值字符串就行。
错误原因分析
你写的TempAppItem.RequiredAttendees("some@emailaddress.com")是把属性当成了方法来调用,而VB.NET提示的Too many arguments to 'Property RequiredAttendees As String'就是在告诉你:这个属性只接受字符串赋值,不支持传参调用。
修正后的代码
下面是调整后的完整代码,我还顺便优化了资源释放和操作顺序:
Public Sub SendAppointment() Dim TempApp As Outlook.Application = New Outlook.Application() ' 创建约会项对象 Dim TempAppItem As Outlook.AppointmentItem = TempApp.CreateItem(Outlook.OlItemType.olAppointmentItem) TempAppItem.Subject = Onderwerp.SelectedItem TempAppItem.Body = Opmerking.Text ' 设置地点(需要时取消注释) 'TempAppItem.Location = "No Location" ' 设置开始和结束时间 TempAppItem.Start = Convert.ToDateTime(Btijd.SelectedItem) TempAppItem.End = Convert.ToDateTime(Etijd.SelectedItem) ' ✅ 正确设置必填参会者:直接赋值字符串 ' 单个参会者 TempAppItem.RequiredAttendees = "some@emailaddress.com" ' 多个参会者用分号分隔 'TempAppItem.RequiredAttendees = "colleague1@company.com; colleague2@company.com" ' 发送约会:Send方法会自动完成保存和发送操作,无需额外调用Save() TempAppItem.Send() ' 释放资源 TempAppItem = Nothing TempApp = Nothing End Sub
额外提示
- 直接使用邮箱地址比联系人名称更可靠,避免Outlook无法解析联系人名称的问题;
Send()方法执行后,Outlook会自动把约会发送给参会者,同时在你的日历中创建对应的条目,所以不需要再调用Save();- 如果只是想把约会保存到自己的日历而不发送,才需要调用
Save(),此时不需要调用Send()。
内容的提问来源于stack exchange,提问作者Xavier93
相关产品推荐
相关产品推荐

