在发送EWS之前转发消息时获取带有标头的原始消息

时间:2012-02-28 14:17:42

标签: exchangewebservices email-forwarding

我正在尝试提供转发电子邮件的方法,就像我们在Outlook中一样。当用户单击向前时,它会打开一个表单,其中包含原始消息和标题信息,使用户有机会修改正文。要获取消息,我会执行以下操作。

    var item = (EmailMessage)dataGridEmail.SelectedItem;
    ResponseMessage forward = item.CreateForward();
    textBlockForward.Text = forward.Body;

我收到ServiceObjectPropertyException消息“您必须先加载或分配此属性才能读取其值。”如果我在访问之前尝试加载body属性的值,我会收到NotSupportedException消息“不支持指定的方法”。有没有办法在实际发送之前获取转发消息?

2 个答案:

答案 0 :(得分:0)

您应该使用forward.Body来填充item.Body控件,而不是使用textBlockForward。有关详细信息,请参阅Forwarding Email Messages using EWS on MSDN

var item = (EmailMessage)dataGridEmail.SelectedItem;
ResponseMessage forward = item.CreateForward();
textBlockForward.Text = item.Body; // needs to come from original message source
forward.BodyPrefix = "new body contents"; // prepended body content

答案 1 :(得分:0)

我注意到有人能解决这个问题。这就是我所做的。

    ResponseMessage responseMessage = message.createForward(); 
    // message is an EmailMessage object
    responseMessage.setBodyPrefix(body);
    responseMessage.save(WellKnownFolderName.Drafts);
    EmailMessage saved = responseMessage.save();
    saved.load(new 
    PropertySet(BasePropertySet.FirstClassProperties,ItemSchema.Body));
    MessageBody messageBody = saved.getBody();
    // do something with messageBody`enter code here`
    //System.out.println(saved.getBody().toString());
    saved.sendAndSaveCopy();