Добавление категории в новые письма - PullRequest
0 голосов
/ 04 октября 2011

Я создаю VSTO 2007 Addin, используя COM.Мое требование - пометить все новые письма в категории Blue.У меня есть следующий код в обработчике OnNewMailEx

HRESULT hrGetNewMail;
_NameSpacePtr  pMAPI = NULL;
hrGetNewMail = spApp->GetNamespace((_bstr_t)GetStringFromTable(147),&pMAPI);
if(FAILED(hrGetNewMail))
 {
   if(spApp!=NULL)
   spApp.Release ();
   return OPERATION_FAILED;
 }
 if(spApp!=NULL)
spApp.Release ();


CComBSTR EntryStoreID;
MAPIFolderPtr spMAPIFolder = NULL;
hrGetNewMail = pMAPI->GetDefaultFolder (olFolderInbox, &spMAPIFolder);
if(FAILED(hrGetNewMail))
{
    if(pMAPI!=NULL)
        pMAPI.Release ();
    return OPERATION_FAILED;
}

    hrGetNewMail = spMAPIFolder->get_StoreID (&EntryStoreID);
if(FAILED(hrGetNewMail))
{
    if(spMAPIFolder!=NULL)
        spMAPIFolder.Release ();
    if(pMAPI!=NULL)
        pMAPI.Release ();
}
if(spMAPIFolder!=NULL)
    spMAPIFolder.Release ();

VARIANT varEntryStoreID;
hrGetNewMail = EntryStoreID.CopyTo (&varEntryStoreID);
if(FAILED(hrGetNewMail))
{
    return OPERATION_FAILED;
}

    IDispatch* spLatestMailitem;
hrGetNewMail = pMAPI->GetItemFromID (EntryID,varEntryStoreID,&spLatestMailitem);
if(FAILED(hrGetNewMail))
{
    if(pMAPI!=NULL)
        pMAPI.Release ();
}
if(pMAPI!=NULL)
    pMAPI.Release ();

CComQIPtr <Outlook::_MailItem> spMailItem;
hrGetNewMail=spLatestMailitem->QueryInterface(&spMailItem);

HRESULT hrCat = spMailItem->put_Categories(_T("Blue Category"));
//spMailItem->put_FlagIcon(olRedFlagIcon);
hrCat = spMailItem->Save();

после выполнения, когда я открываю новые письма, он показывает категорию как синий, но в папке входящих сообщений он не отмечен ни в одной категории.Когда я закрываю и открываю внешний вид, категория исчезает, даже когда я открываю письмо, которое ранее было помечено как синяя категория.однако я мог бы добавить флаг, который появляется всякий раз, когда я закрываю и открываю прогноз.пожалуйста, предложите мне проблему

1 Ответ

1 голос
/ 10 апреля 2012

Если категория не существует в списке основных категорий, я не думаю, что она сохраняется.Добавить категорию в основной список категорий.Для получения дополнительной информации см. http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.categories.aspx

Также ваш пример перезапишет любые существующие категории.Вы должны проверить, указана ли уже категория, и если это так, разделить существующее значение и значение, которое вы хотите добавить запятой.

...