2011-11-04 73 views
1

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

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甚至是最好的方法来做到这一点?

回答

3

相反EWS的,你应该使用EWS托管API,因为它更简单易用:

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); 

顺便说一句,你确定你有项目Id?或者你有一个RFC 822消息ID?这两个是不同的。

+0

有什么区别:*** ItemId vs RFC 822 Message-Id ***? – Kiquenet

+0

ItemId是由Exchange生成的二进制标识符,可用于访问该项目。 Message-Id通常由创建邮件的人员(或处理邮件的第一台邮件服务器)生成。 –

相关问题