Hi All, I have a small piece of code which opens the mail item, changes the message class and adds an custom property to the message in the Exchange 2000 store. This code seems to be working fine as an "exe" with the message class being changed and the custom property being added to the message. If I convert the same code into a ATL dll and call the method from a VB client, the code doesn't work as expected. Only the message class gets changed. Am I missing something?? System Details: a) Windows 2000 server build 2195, SP2 a) Exchange 2000 server with SP2 Below is the code for reference: ---------------------------------------------------------------------------- ------------ Headers.h #import <msado15.dll> no_namespace rename("EOF", "EndOfFile") #import <cdoex.dll> no_namespace #include <objbase.h> #include <iostream.h> #include <string.h> #include <assert.h> #include <comdef.h> #include <stdio.h> ---------------------------------------------------------------------------- ------------ The "exe" code Property.cpp #include "Headers.h" struct StartOle { StartOle() { CoInitialize(NULL); } ~StartOle() { CoUninitialize(); } } _inst_StartOle; void dump_com_error(_com_error &e) { printf("Oops - hit an error!\n"); printf("\tCode = %08lx\n", e.Error()); printf("\tCode meaning = %s\n", e.ErrorMessage()); _bstr_t bstrSource(e.Source()); _bstr_t bstrDescription(e.Description()); printf("\tSource = %s\n", (LPCTSTR) bstrSource); printf("\tDescription = %s\n", (LPCTSTR) bstrDescription); } int main(void) { HRESULT hr; IMessagePtr iMsg = NULL; IDataSourcePtr iDsrc = NULL; bstr_t MailUrl; _variant_t varOptional (DISP_E_PARAMNOTFOUND,VT_ERROR); FieldsPtr Flds; MailUrl="file://./backofficestorage/mydomain.com/MBX/vijay/Inbox/Hi.EML"; CoInitialize(NULL); try { //Create an Instance of Message class hr = CoCreateInstance( __uuidof(Message), NULL, CLSCTX_INPROC_SERVER, __uuidof(IMessage), reinterpret_cast<void**>(&iMsg) ); assert(SUCCEEDED(hr)); if (SUCCEEDED(hr)) { cout << "Message instance created !"<< endl; } //Get the Datasource interface iDsrc=iMsg; //Open the mail hr= iDsrc->Open(MailUrl, NULL, adModeReadWrite, adFailIfNotExists, adOpenSource, bstr_t(), bstr_t() ); if (SUCCEEDED(hr)) { cout<<"Opened the Mail"<<endl; } Flds=iMsg->Fields; string str("IPM.Note1"); bstr_t xxx(str.c_str()); //Message Class Flds->Item["http://schemas.microsoft.com/exchange/outlookmessageclass"]->Val ue = _variant_t(xxx); Flds->Update(); //Custom Property Flds->Append(bstr_t("Prop:Prop1"),adBSTR,1,static_cast<FieldAttributeEnum>(0 ),_variant_t("MyProp") ); Flds->Update(); //Save these to the message hr = iMsg->DataSource->Save(); if(SUCCEEDED(hr)) { cout<<"Property Written"<<endl; } }// Try catch( _com_error e) { dump_com_error(e); } CoUninitialize(); return 0; } ---------------------------------------------------------------------------- ------------ The ATL Dll code #include "Headers.h" STDMETHODIMP MyClass::SetProperty(BSTR mailUrl) { HRESULT hr; IMessagePtr iMsg = NULL; IDataSourcePtr iDsrc = NULL; FieldsPtr Flds; CoInitialize(NULL); //*** Create an Instance of Message class / hr = CoCreateInstance(__uuidof(Message), NULL, CLSCTX_INPROC_SERVER, __uuidof(IMessage), reinterpret_cast<void**>(&iMsg) ); assert(SUCCEEDED(hr)); if (SUCCEEDED(hr)) { cout << "Message instance created !"<< endl; } //Get the Datasource interface iDsrc=iMsg; //Open the mail hr= iDsrc->Open(MailUrl, NULL, adModeReadWrite, adFailIfNotExists, adOpenSource, bstr_t(), bstr_t() ); if (SUCCEEDED(hr)) { cout<<"Opened the Mail"<<endl; } Flds=iMsg->Fields; string str("IPM.Note1"); bstr_t xxx(str.c_str()); //Message Class Flds->Item["http://schemas.microsoft.com/exchange/outlookmessageclass"]->Val ue = _variant_t(xxx); Flds->Update(); //Custom Property Flds->Append(bstr_t("Prop:Prop1"),adBSTR,1,static_cast<FieldAttributeEnum>(0 ),_variant_t("MyProp") ); Flds->Update(); //Save these to the message hr = iMsg->DataSource->Save(); if(SUCCEEDED(hr)) { cout<<"Property Written"<<endl; } CoUninitialize(); return S_OK; } P.S: The method "SetProperty" is called from a VB client ---------------------------------------------------------------------------- ------------ Regards Vijay