Adding a signature to a message account (setting properties on message accounts)
Hi!
For those of you with WIndows Mobile 6.1 devices, you might notice that your Activesync emails all automatically have signatures. We've gotten requests from partners wanting to do add/modify the signature to an account as well. Here is a sample function to update the signature for the Activesync account. Error checking removed in this sample code :).
#include <atlbase.h>
#include <cemapi.h>
HRESULT AddSignatureToAccount()
{
HRESULT hr;
CComPtr<IMAPITable> ptbl;
CComPtr<IMAPISession> pSession;
CComPtr<IMsgStore> pMsgStore;
// Log onto MAPI
hr = MAPILogonEx(0, NULL, NULL, 0, static_cast<LPMAPISESSION *>(&pSession));
// You can open a different message store here instead of the default
hr = pSession->OpenMsgStore(NULL, 0, NULL, NULL, 0, &pMsgStore);
SPropValue rgspv[3] = { 0 };
rgspv[0].ulPropTag = PR_CE_SIGNATURE; // signature content
rgspv[0].Value.lpszW = L"Sent from my personal Windows Mobile phone";
rgspv[1].ulPropTag = PR_CE_USE_SIGNATURE; // use the signature in newly composed emails
rgspv[1].Value.b = TRUE;
rgspv[2].ulPropTag = PR_CE_USE_SIGNATURE_REPLY_FORWARD; // use signature in replied or forwarded emails
rgspv[2].Value.b = TRUE;
// save the data the properties
hr = pMsgStore->SetProps (3, rgspv, NULL);
// Log off
pSession->Logoff(0, 0, 0);
return hr;
}
This should be a good starting point on how to set properties on message accounts as well. You can find a list of valid properties in mapitags.h. Have fun!