EWS设置EmailMessage.Body.Text错误

时间:2016-04-06 14:01:42

标签: .net vb.net exchangewebservices ews-managed-api

我有以下代码只需将文字添加到电子邮件中:

msg = New EmailMessage(Service)
With msg
    .From = New EmailAddress(Config("OutSender"))
    .ToRecipients.Add(New EmailAddress(Config("OutRecip")))
    .Subject = Config("OutSubject")

    .Load(New PropertySet(ItemSchema.Body))
    .Body.Text = Config("protMarking")
    .Send()
End With

我收到错误:

You must load or assign this property before you can read its value

在这一行:

.Body.Text = New MessageBody(Config("protMarking"))

这就是我尝试在此行加载body属性的原因:

.Load(New PropertySet(ItemSchema.Body))

但是我现在收到此错误:

This operation can't be performed because this service object doesn't have an Id

经过广泛的谷歌搜索和大量查看我的代码后,我无法弄明白。我不确定为什么新的电子邮件没有ID?

注意: Service调用返回ews服务的属性。我已经检查过这是否正常。

2 个答案:

答案 0 :(得分:2)

您应该只设置Body属性(不是Body.Text

在您的情况下,无需拨打Load。但是,作为参考,它不起作用,因为您尚未在服务上创建电子邮件消息。只有当你到达Send时(这应该是SendAndSaveCopy()

)才会发生这种情况
msg = New EmailMessage(Service)
With msg
    .From = New EmailAddress(Config("OutSender"))
    .ToRecipients.Add(New EmailAddress(Config("OutRecip")))
    .Subject = Config("OutSubject")
    .Body = Config("protMarking")
    .SendAndSaveCopy()
End With

答案 1 :(得分:0)

使用@PaulG答案和之前的一些试错工作,这是我的解决方案。

msg = New EmailMessage(Service)
With msg
    .From = New EmailAddress(Config("OutSender"))
    .ToRecipients.Add(New EmailAddress(Config("OutRecip")))
    .Subject = Config("OutSubject")
    .Body = New MessageBody(Config("protMarking"))
    .SendAndSaveCopy()
End With

这一行是主要的变化/修复:

.Body = New MessageBody(Config("protMarking"))