如何使用Exchange Web服务在C#中更改电子邮件主题

时间:2011-11-04 20:52:12

标签: c# .net exchange-server

我有一段代码,我通过Exchange Web服务连接,我有消息ID。我需要将此电子邮件的主题更改为传递给我的方法的字符串,以便稍后在我的工作流程中成功处理。但是,我对如何使用交换Web服务类感到困惑,我的代码如下:

public bool SetEmailCorrectSubject(string msgID, string subject)
{
    bool bSuccess = true;
    if (String.IsNullOrEmpty(msgID))
    {
        return false;
    }
    try
    {
        ItemIdType messageId = new ItemIdType();
        messageId.Id = msgID;

        ItemChangeDescriptionType desc = new ItemChangeDescriptionType();
        // Not sure how to set this up
        ItemChangeType itemChange = new ItemChangeType();
        itemChange.Item = messageId;
        UpdateItemType updateItem = new UpdateItemType();
    }
    catch (Exception e)
    {
        _logger.Error("error with resending email with title", e);
        return false;
    }
    return bSuccess;
}

根据我的理解,UpdateItemType类是可行的方法,但我不清楚如何告诉它我想要将主题参数更改为电子邮件主题。

有什么想法吗?使用UpdateItemType甚至是最好的方法吗?

1 个答案:

答案 0 :(得分:4)

您应该使用EWS托管API代替EWS,因为它更易于使用:

EWS托管API - 下载:http://www.microsoft.com/download/en/details.aspx?id=13480

EWS托管API - SDK:http://msdn.microsoft.com/en-us/library/dd633710(v=exchg.80).aspx

除此之外,您不使用ItemChangeType和UpdaetItemType来修改项目。使用Item.Bind()方法绑定到项目,更改主题并更新它:

var service = new ExchangeService(ExchangeVersion.Exchange2010_SP1)
                      {
                          UseDefaultCredentials = true,
                          Url = new Uri("https://casserver/ews/exchange.asmx")
                      };
Item item = Item.Bind(service, new Itemid(msgid));
item.Subject = "test";
item.Update(ConflictResolutionMode.AutoResolve);
是的,你确定你有ItemId吗?或者你有RFC 822 Message-Id?这两者是不同的。