Как изменить тему электронной почты в C # с помощью веб-служб Exchange - PullRequest
2 голосов
/ 05 ноября 2011

У меня есть фрагмент кода, к которому я подключаюсь через веб-службы Exchange, и у меня есть идентификатор сообщения. Мне нужно изменить тему этого письма на строку, переданную в мой метод, для успешной обработки позже в моем рабочем процессе. Тем не менее, я немного запутался в том, как использовать классы веб-сервисов exchange, мой код ниже:

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 - это путь, но я не знаю, как сказать ему, что я хочу изменить адрес электронной почты в зависимости от параметра subject.

Есть идеи? Использование UpdateItemType - даже лучший способ сделать это?

1 Ответ

4 голосов
/ 08 ноября 2011

Вместо EWS вы должны использовать EWS Managed API, поскольку его проще использовать:

EWS Managed API - Загрузить: http://www.microsoft.com/download/en/details.aspx?id=13480

EWS Managed 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? Эти два разные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...