|
Hi.
I am able to process the message stores in Pocket Outlook through code. Now that I got your library, from www.toddsoftware.com, I think everything will be much easier. Nonetheless, I will like to know if it's possible to copy an already composed MMS message in the Outbox folder. Let me explain. I have an application wich builds an MMS message and sends this message through sockets (mainly because Pocket PC didn't have an MMS API at the time of the application development). What I want now is to just copy this message to the Outbox so it's sent through Pocket Outlook instead of through our application through sockets.
Thanks in advance.
Erik.
|
|
|
|
|
Hello,
I have to write an application sending MMS (on WM5).
Which structure are you using to store the MMS? is it a LPMESSAGE or what?
Which parameters are you using for the socket?
thank you in advance,
Agnes
|
|
|
|
|
Can anybody send MMS messages using MAPI?
I you know the solution please let me know
Thanks in advance,
Merche
|
|
|
|
|
can we send MMS (Multimedia Messaging Service)using CEMAPI.
Hira Mannan
|
|
|
|
|
hi, Thanks for your article.
I want to confirm something,please help me.
when I receive some message by e_mail.
soem times I can can not get whole message by some reason.
So When I want to parse message, I should judge if the message has been receied completely or not.
If not, set flag to download.
So I define ULONG prop = {1,PR_MSG_STATUS}
and I use Getprops((LPSPropTagArray)prop,MAPI_UNICODE,&val,&propval)
Is that right?
and If it is right,is it save in propval[0].Value.ul?
if it is not right?
how can I get the flag?
Thanks in advance
|
|
|
|
|
Have you looked at the MSGSTATUS_ constants. These indicate the values in PR_MSG_STATUS. The most important flag being MSGSTATUS_MARKED_FOR_DOWNLOAD.
Visit www.toddsoftware.com - Programatic Email Solutions for Windows CE
|
|
|
|
|
I'm curious, why must the SMS text be put in the message field? If I use Inbox, and make an SMS message, text can easily be written in the message body, and sent normally, so why can't I put the text from my app. in the body? It would make reading the message from Inbox a lot easier. I actually tried using the property tag PR_BODY instead of PR_SUBJECT, but the text didn't get placed in the body, nothing did. Is there some way to put the text in the body and have the SMS send the body text?
Thanks much for your time!
kurt
|
|
|
|
|
please check here http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetcomp/html/inthehandpoom.asp[^], it is MSDN article about sending SMTP message. Sending SMS message is about the same.
Because the BODY could be very large (especially for email message), so CEMAPI treat the BODY differently with SUBJECT. You can set SUBJECT as a property of SMS message, but you have to WRITE BODY with iStrem object.
For SMS message, you can set your message text to SUBJECT and send (with SubmitMessage), when the message received, text WILL displayed in BODY field!!!
Just try it.
|
|
|
|
|
I also had a problem with PR_BODY. Well not all MSDN page is perfect. Check my comment "Re: Message to the subject 2? And Strange Characters".
|
|
|
|
|
Hi EK_Kiwi
I am here because I have googled "SMS MAPI".
I am tring to write a SMS program by using CeMAPI. Why?
Because the SMS API can only send SMS messages, but could NOT act as the built-in SMS program -- it won't store SMS messages in SMS store/folders.
the code i used is originally from MSDN website (named SendMail, it is also with eVC++ 4.0 installation). I only changed two places: PR_ADDRTYPE to L"SMS", PR_MSG_STATUS to MSGSTATUS_RECTYPE_SMS. Someone in the net said that, the PR_MESSAGE_CLASS should be set as "IPM.SMStext" (in ASCII string, not unicode).
I tried them all, and I can send out SMS messages, but has problems:
1, the Chinese text in the SMS message sent by my program is un-recognized, they appear as ???????, one ? for each Chinese character. BUT, in the SentBox(of my Chinese verion of XDAII), every thing is ok.
2, after I run my program, the built-in SMS program act strangely: when compose an SMS message, there will be Cc, Bcc and Subject fields!!! They should be something related to eMail message, but not SMS message. Is this caused by my earlier testing (first time I compiled my program and download to my XDAII, MGS_STATUS was not set to MSGSTATUS_RECTYPE_SMS. so it changed my SMS message store's properties?)?
3, IYO, do you think it is mecessary to set PR_MESSAGE_CLASS as "IPM.SMStext"? I didn't find any change.
Please help me.
here is my code
============================================================
/*
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
This is sample code and is freely distributable.
*/
#include <mapidefs.h>
#include <mapicode.h>
#include <mapitags.h>
#include <mapix.h>
#include <mapiutil.h>
#include <cemapi.h>
//Macros
#ifndef EXIT_ON_FAILED
#define EXIT_ON_FAILED(_hr)\
if (FAILED(_hr))\
{ \
RETAILMSG(1,(_T("CEMAPI: FAILED(%x)at %hs:%d\n"), \
_hr, __FILE__, __LINE__)); \
goto FuncExit; \
}
#endif //EXIT_ON_FAILED
#ifndef RELEASE_OBJ
#define RELEASE_OBJ(s)\
if (s != NULL)\
{ \
s->Release(); \
s = NULL; \
}
#endif //RELEASE_OBJ
//Function Prototypes
HRESULT CEMAPI_SetMessageRecipients(LPMESSAGE pmsg);
HRESULT CEMAPI_SetMessageProps(LPMESSAGE pmsg);
void CEMAPI_AddRecipients(LPWSTR pszSrc, ULONG ulType, ADRLIST* plst,
LPWSTR& pszLocalRecips, LPSPropValue& pval);
ULONG CountRecipsInString(LPCWSTR psz);
HRESULT CEMAPI_AttachFile(LPMESSAGE pmsg);
// **************************************************************************
// Function Name: WinMain
// Purpose: Standard Win32 entry point
// Arguments:
// none are used for this sample
//
// Return Values:
// int
// app exit code
//
// Description:
//
// This function controls the main flow of the application. A summary:
// Logon to the message store
// Get the message stores table
// For each entry(i.e. local account)
// Open current store entry
// Get the Drafts folder(necessary for outgoing mail)
// Create a new message in this folder
// Set relevant message properties(Recipients, Subject, Body, etc)
// Send the message
// Clean up
//
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int CmdShow
)
{
HRESULT hr;
IMAPISession * pSession = NULL;
IMAPITable * pTable = NULL;
SRowSet * psrs = NULL;
IMsgStore * pStore = NULL;
ULONG rgTags[] = { 1, PR_CE_IPM_DRAFTS_ENTRYID };
ULONG cValues = 0;
SPropValue * rgprops = NULL;
SPropValue * rgpropsMsg = NULL;
LPMAPIFOLDER pfldrDrafts = NULL;
IMessage * pmsg = NULL;
// First logon to the store.
hr = MAPILogonEx(NULL, NULL, NULL, NULL, &pSession);
EXIT_ON_FAILED(hr);
// Get the message stores table
hr = pSession->GetMsgStoresTable(MAPI_UNICODE, &pTable);
EXIT_ON_FAILED(hr);
while (SUCCEEDED(pTable->QueryRows(2, 0, &psrs))) //原来第一个参数是1
{
// Check number of rows returned. Since the above call only asks for
one,
// anything else means we are at the end of the table
if (0 == psrs->cRows)
{
//MessageBox(NULL, L"Qery!", L"Error", MB_OK);
break;
}
// Make sure we got the props we need
if ((1 > psrs->aRow[1].cValues)||(PR_ENTRYID !=
psrs->aRow[1].lpProps[0].ulPropTag))
{
MessageBox(NULL, L"Store missing PR_ENTRYID!", L"Error", MB_OK);
hr = E_FAIL;
break;
}
// Open this message store
hr = pSession->OpenMsgStore(NULL,
psrs->aRow[1].lpProps[0].Value.bin.cb,
(ENTRYID *)psrs->aRow[1].lpProps[0].Value.bin.lpb , //bin.lpb,
NULL,
0,
&pStore);
EXIT_ON_FAILED(hr);
// Now get the Drafts folder. In order for a message to be sent by
MAPI, it must be created
// in the Drafts folder
hr = pStore->GetProps((SPropTagArray *)rgTags, MAPI_UNICODE,
&cValues, &rgprops);
EXIT_ON_FAILED(hr);
ASSERT(rgprops);
ASSERT(rgprops[0].ulPropTag == PR_CE_IPM_DRAFTS_ENTRYID);
hr = pStore->OpenEntry(rgprops[0].Value.bin.cb,
(LPENTRYID)rgprops[0].Value.bin.lpb , //bin.lpb,
NULL,
MAPI_MODIFY,
NULL,
reinterpret_cast <iunknown **="">(&pfldrDrafts));
EXIT_ON_FAILED(hr);
ASSERT(pfldrDrafts);
// Now create a message...
hr = pfldrDrafts->CreateMessage(NULL, 0, &pmsg);
EXIT_ON_FAILED(hr);
ASSERT(pmsg);
// MessageBox(NULL, L"短信已经生成!", L"Error", MB_OK);
// Now set the some properies on the message....
CEMAPI_SetMessageProps(pmsg);
// attach a bogus file
//MessageBox(NULL, L"短信属性!", L"Error", MB_OK);
//hr=CEMAPI_AttachFile(pmsg);
//EXIT_ON_FAILED(hr);
// Now send the message
hr = pmsg->SubmitMessage(0);
EXIT_ON_FAILED(hr);
MessageBox(NULL, L"短信已经发送!", L"Error", MB_OK);
// Clean up
MAPIFreeBuffer(rgprops);
MAPIFreeBuffer(rgpropsMsg);
FreeProws(psrs);
rgprops = NULL;
rgpropsMsg = NULL;
psrs = NULL;
RELEASE_OBJ(pmsg);
RELEASE_OBJ(pfldrDrafts);
RELEASE_OBJ(pStore);
}
FuncExit:
//Clean up
MAPIFreeBuffer(rgprops);
MAPIFreeBuffer(rgpropsMsg);
FreeProws(psrs);
RELEASE_OBJ(pmsg);
RELEASE_OBJ(pfldrDrafts);
RELEASE_OBJ(pStore);
RELEASE_OBJ(pTable);
RELEASE_OBJ(pSession);
return 0;
}
// **************************************************************************
// Function Name: CountRecipsInString
// Purpose: Counts the number of recipient addresses in a given string
// Arguments:
// IN LPCWSTR psz - string of recipients
//
// Return Values:
// ULONG
// Count of recipients(number of semi-colons + 1)contained in the input
string
//
// Description:
//
// This function merely counts the number of semi-colons in a string and
returns that
// number + 1. This can be interpreted as the number of recipients in a
properly formatted
// recipient list
//
ULONG CountRecipsInString(
LPCWSTR psz
)
{
ULONG cRecips = 0;
if (psz != NULL)
{
if (*psz != '\0')
{
++cRecips;
}
while (*psz != L'\0')
{
if (*psz == L';')
{
++cRecips;
}
++psz;
}
}
return cRecips;
}
// **************************************************************************
// Function Name: CEMAPI_AddRecipients
// Purpose: Sets a message's recipient(s)to a hard-coded value
// Arguments:
// IN LPWSTR pszSrc - semi-colon delimited recipient list
// IN ULONG ulType - Recipient type(To, Cc, or Bcc)
// INOUT ADRLIST* plst - Recipient buffer, pointer is incremented and returned
// IN LPWSTR pszLocalRecips& - local copy of pszSrc
// INOUT LPSPropValue& - buffer to hold message props(address type, recip
type, etc),
// incremented and returned
//
// Return Values:
// void
//
// Description:
//
// This function sets recipient properties for a list of recipients.
Properties include
// the recipient type(To, Cc, or Bcc), the address type(always SMTP), and
the e-mail
// address list. The properties are returned through the plst parameter.
//
void CEMAPI_AddRecipients(
LPWSTR pszSrc,
ULONG ulType,
ADRLIST* plst,
LPWSTR& pszLocalRecips,
LPSPropValue& pval
)
{
if (pszSrc == NULL)
{
return;
}
LPWSTR psz = pszSrc;
while (*psz != L'\0')
{
while (*psz == L' ' && *psz != '\0')
{
++psz;
}
if (*psz == L'\0')
{
break;
}
LPWSTR pszEnd = psz;
while (*pszEnd != L' ' && *pszEnd != ';' && *pszEnd != '\0')
{
++pszEnd;
}
int cch = pszEnd - psz;
wcsncpy(pszLocalRecips, psz, cch);
*(pszLocalRecips + cch)= L'\0';
plst->aEntries[plst->cEntries].cValues = 3;
plst->aEntries[plst->cEntries].rgPropVals = pval;
// Set the type(To, Cc, Bcc)...
pval->ulPropTag = PR_RECIPIENT_TYPE;
pval->Value.ul = ulType;
++pval;
// Set the address type(SMTP is the only type currently supported)
pval->ulPropTag = PR_ADDRTYPE;
pval->Value.lpszW = L"SMS"; //SMTP
++pval;
// Set the address...
pval->ulPropTag = PR_EMAIL_ADDRESS;
pval->Value.lpszW = pszLocalRecips;
++pval;
++plst->cEntries;
pszLocalRecips += wcslen(pszLocalRecips)+ 1;
if (*pszEnd != L'\0')
{
++pszEnd;
}
psz = pszEnd;
}
}
// **************************************************************************
// Function Name: CEMAPI_SetMessageRecipients
// Purpose: Sets a message's recipient(s)to a hard-coded value
// Arguments:
// INOUT LPMESSAGE pmsg - pointer to IMessage interface
//
// Return Values:
// HRESULT
// returns S_OK if the message's recipients are successfully modified.
Otherwise an error
// is returned
//
// Description:
//
// This function defines a hard-coded string which represents the recipients
for the given
// message. The list of recipients is semi-colon delimited. The string for
each field(To,
// Cc, and Bcc)is parsed and a count of recipients is calculated. A buffer
is allocated
// to hold the list of recipients. The recipients are added to the the
buffer by field type,
// and the the buffer is passed into IMessage::ModifyRecipients.
HRESULT CEMAPI_SetMessageRecipients(
LPMESSAGE pmsg
)
{
ULONG cRecipients = 0;
ULONG cchTotalRecips = 0;
//hard-coded recip values. Delimit with semi-colons if more than address is
used per field
//Example: LPWSTR pszTo = L"foo@bar.com;test@bar.com";
LPWSTR pszTo = L"13911822618";
LPWSTR pszCc = L"";
LPWSTR pszBcc = L"";
ADRLIST* plst = NULL;
LPSPropValue pval = NULL;
BYTE* pb = NULL;
LPWSTR pszLocalRecips;
HRESULT hr;
if (pszTo)
{
cRecipients += CountRecipsInString(pszTo);
cchTotalRecips += wcslen(pszTo)+ 3;
}
/* if (pszCc)
{
cRecipients += CountRecipsInString(pszCc);
cchTotalRecips += wcslen(pszCc)+ 3;
}
if (pszBcc)
{
cRecipients += CountRecipsInString(pszBcc);
cchTotalRecips += wcslen(pszBcc)+ 3;
}
*/
//
// Allocate one big block of memory to hold all the strings.
// The block is arranged as follows:
//
// ADRLIST SPropValue's Copy of addresses
// |---------------------|--------------------|---------------------|
//
DWORD cb = sizeof(ADRLIST)+((sizeof(ADRENTRY)+ sizeof(SPropValue)* 3)*
cRecipients);
pb = new BYTE[cb +(cchTotalRecips * sizeof(WCHAR))];
if (pb == NULL)
{
return E_OUTOFMEMORY;
}
ZeroMemory(pb, cb +(cchTotalRecips * sizeof(WCHAR)));
plst =(ADRLIST*)pb;
pszLocalRecips =(LPWSTR)(pb + cb);
pb += sizeof(ADRLIST)+(sizeof(ADRENTRY)* cRecipients);
pval =(SPropValue*)pb;
CEMAPI_AddRecipients(pszTo, MAPI_TO, plst, pszLocalRecips, pval);
// CEMAPI_AddRecipients(pszCc, MAPI_CC, plst, pszLocalRecips, pval);
// CEMAPI_AddRecipients(pszBcc, MAPI_BCC, plst, pszLocalRecips, pval);
hr = pmsg->ModifyRecipients(MODRECIP_ADD, plst);
delete[](BYTE*)plst;
return hr;
}
// **************************************************************************
// Function Name: CEMAPI_SetMessageProps
// Purpose: Sets some hardcoded properties on a given message
// Arguments:
// INOUT LPMESSAGE pmsg - pointer to IMessage interface
//
// Return Values:
// HRESULT
// returns S_OK if the properties are successfully set, otherwise an
error is returned
//
// Description:
//
// This function sets up message recipients, sets the message properties,
then writes the
// the message body to the message via an IStream interface.
HRESULT CEMAPI_SetMessageProps(
LPMESSAGE pmsg
)
{
SPropValue rgprops[4] = {0};
ULONG cProps = 0;
HRESULT hr;
TCHAR pszSubject[] = L"";
TCHAR pszBody[] = L"短信内容."; //********* it is in Chinese!
LPSTREAM pstm = NULL;
unsigned long test;
char test1[] = "IPM.SMStext";
//test = (unsigned long) &test1;
// Set the recipients up.
hr = CEMAPI_SetMessageRecipients(pmsg);
EXIT_ON_FAILED(hr);
// Set the flags and a subject if they exist.
//rgprops[cProps].ulPropTag = PR_MESSAGE_FLAGS;
//rgprops[cProps].Value.ul = MSGFLAG_UNSENT;
//++cProps;
// rgprops[cProps].ulPropTag = PR_LANGUAGE;
// rgprops[cProps].Value.lpszA = "cn"; //"IPM.SMStext";
// ++cProps;
rgprops[cProps].ulPropTag = PR_MESSAGE_CLASS;
rgprops[cProps].Value.lpszA = "IPM.SMStext";
++cProps;
rgprops[cProps].ulPropTag = PR_MSG_STATUS;
rgprops[cProps].Value.ul = MSGSTATUS_RECTYPE_SMS; //SMTP;
++cProps;
rgprops[cProps].ulPropTag = PR_MESSAGE_FLAGS;
rgprops[cProps].Value.ul = MSGFLAG_UNSENT;
++cProps;
if (pszSubject != NULL)
{
rgprops[cProps].ulPropTag = PR_SUBJECT;
rgprops[cProps].Value.lpszW = pszSubject;
++cProps;
}
// Apply the property values to this message
hr = pmsg->SetProps(cProps, rgprops, NULL);
EXIT_ON_FAILED(hr);
// Stream the body in...
hr = pmsg->OpenProperty(PR_BODY, NULL, STGM_WRITE, MAPI_MODIFY,
(LPUNKNOWN*)&pstm);
EXIT_ON_FAILED(hr);
pstm->Write(pszBody,(wcslen(pszBody)+ 0)* sizeof(WCHAR), NULL);
pstm->Release();
FuncExit:
return hr;
}
// **************************************************************************
// Function Name: CEMAPI_AttachFile
// Purpose: Attaches a bogus file to the outgoing message
// Arguments:
// INOUT LPMESSAGE pmsg - pointer to IMessage interface
//
// Return Values:
// HRESULT
// returns S_OK if the "file" is successfully attached, otherwise an
error is returned
//
// Description:
//
// This function sets up a file attachment and associates it with the
specified message,
// and reads in the file data from via IStream. The "file" in this example
is just dummy
// data. Normally data from a real file would be streamed in and written to
the attachment.
HRESULT CEMAPI_AttachFile(
LPMESSAGE pmsg
)
{
IAttach * pAttachment = NULL;
SPropValue rgpropsAttch[3];
ULONG ulAttachNum;
HRESULT hr;
// bogus filename...normally would reference a real file
WCHAR wcsAttachmentName[] = L"test.txt";
DWORD dwFileSize;
ULONG ulStatus = MSGSTATUS_RECTYPE_SMTP;
IStream * pstmAttachment = NULL;
// our fake file data, normally would be streamed in from a file
char szBuf[] = "Hello, Windows CE";
dwFileSize = strlen(szBuf)+1;
// create the attachment
hr = pmsg->CreateAttach(NULL, 0, &ulAttachNum, &pAttachment);
EXIT_ON_FAILED(hr);
rgpropsAttch[0].ulPropTag = PR_ATTACH_FILENAME;
rgpropsAttch[0].Value.lpszW = wcsAttachmentName;
rgpropsAttch[1].ulPropTag = PR_ATTACH_SIZE;
rgpropsAttch[1].Value.ul = dwFileSize;
rgpropsAttch[2].ulPropTag = PR_MSG_STATUS;
rgpropsAttch[2].Value.ul = ulStatus;
hr = pAttachment->SetProps(sizeof(rgpropsAttch)/
sizeof(rgpropsAttch[0]), rgpropsAttch, NULL);
EXIT_ON_FAILED(hr);
// open a stream on the attachment
hr = pAttachment->OpenProperty(PR_ATTACH_DATA_BIN, NULL
/*&IID_IStream*/, STGM_WRITE, MAPI_MODIFY,
reinterpret_cast <iunknown
**="">(&pstmAttachment));
EXIT_ON_FAILED(hr);
// store chunk from our fake file buffer into the stream
hr = pstmAttachment->Write(szBuf, 5, NULL);
EXIT_ON_FAILED(hr);
// commit it
hr = pstmAttachment->Commit(STGC_DEFAULT);
EXIT_ON_FAILED(hr);
FuncExit:
MAPIFreeBuffer(rgpropsAttch);
RELEASE_OBJ(pAttachment);
RELEASE_OBJ(pstmAttachment);
return hr;
}
============================================================
|
|
|
|
|
I studied the built-in SMS sending procedure, I found that:
In the SMS Account dialogBox, when you click on "SMS service", there is a
checkbox titled "Send SMS messages using Unicode when necessary".
If I uncheck this checkbox, the Chinese text in the SMS message will be
un-recognized text (actually they are ?????, the same as the SMS message I
sent using my program).
So I guess that, the SubmitMessage function need some tags or properties to
make it send SMS in UNICODE?
anyone knows how to solve this problem?
|
|
|
|
|
Hi HuangGX,
I have the same problem. how to slove it?
|
|
|
|
|
Hello
For the SMS so actually be send you need to have the Pocket Outlook client started (minimized is fine). Does anyone know how to start Pocket Outlook minimized? I tried the following code, but the window takes some time to create so it skips the minimize part...
StartPOutlook()
{
HWND hSettingWnd = FindWindow( _T("Inbox.MainWnd"), _T("Messaging") );
if( !hSettingWnd )
{
PROCESS_INFORMATION pi;
// Start pocket outlook
if( CreateProcess(_T("\\Windows\\tmail.exe"),NULL,NULL,NULL,NULL,CREATE_NEW_CONSOLE,NULL,NULL,NULL,&pi) )
{
// Wait for it to start, then find and minimize the window
for( int i=0; i < 20 && (hSettingWnd = FindWindow( _T("Inbox.MainWnd"), _T("Messaging") )) == NULL; i++)
Sleep(100);
if( hSettingWnd )
{
ShowWindow( hSettingWnd, SW_MINIMIZE );
}
}
else
{
return FALSE;
}
}
Larsa
|
|
|
|
|
Have you ever tried SendMessage()?
|
|
|
|
|
To ensure Pocket Outlook sends the email you created, add the following command line after your MAPI operations.
"\\Windows\\tmail.exe -Service \"SMS\" -Sync"
|
|
|
|
|
Can you give as a example about receiving an SMS?
Thank you very much!!!
|
|
|
|
|
You can change the entryid in GetSMSFolder to use the PR_CE_IPM_INBOX_ENTRYID entryid which will give you the folder where received sms's are stored.
you can them enumerate over the folder table retrieving all the messages which will have the same format as the message of the sms that was sent.
Unfortunatly I am a bit bogged down at the moment so I will try to update a sample for you
Visit www.toddsoftware.com - Programatic Email Solutions for Windows CE
|
|
|
|
|
Hi,
SMS are stored in the inbox folder of the SMS MsgStore.
Use GetSMSMsgStore to get the SMS message store then
Change GetSMSFolder to the entry id for the inbox folder (PR_CE_IPM_INBOX_ENTRYID) instead of the drafts folder (PR_CE_IPM_DRAFTS_ENTRYID).
This folder will have all the SMS's you need
Visit www.toddsoftware.com - Programatic Email Solutions for Windows CE
|
|
|
|
|
|
sorry about my english,
any example for grabbing (get a folder) where sms inbox is ??
|
|
|
|
|
Hi,Is the property got from GetProps function should be free?I think should use MAPIFreeBuffer to free this property.
from MSDN:
Free the returned SPropValue structure by calling the MAPIFreeBuffer function only if GetProps returns S_OK or MAPI_W_ERRORS_RETURNED.
Thank you very much and sorry for my poor English.
Cloud
|
|
|
|
|
You are correct, this appears to be a memory leak
Visit www.toddsoftware.com - Programatic Email Solutions for Windows CE
|
|
|
|
|
Hi,
can I send sms from my pocket pc2003 connecting the mobile phone to the irda port of ppc ?
And using Bluetooth ?
Thanks in advance.
|
|
|
|
|
Sorry, that will not be possible, the reason being that the SMS stack is tightly integrated into the Radio (GSM) stack.
The only approach would be to have custom applications on either end that would transfer the file to the phone and then have the phone transfer the message.
Visit www.toddsoftware.com - Programatic Email Solutions for Windows CE
|
|
|
|
|
Using eVC 4 / C++ to convert the alxBASE library to the CE platform
Some conversion to make this UNICODE compatible, a few changes and additions - eg: CE does not have a class like CFileFind and other things.
I get my project to compile and link with the new library but get 2 unresolved externals
LNK2001: unresolved external symbol "const type_info::`vftable'" (??_7type_info@@6B@)
error LNK2001: unresolved external symbol ___CxxLongjmpUnwind@4
Can not find anywhere what this is al bout...
Any help will be appreciated
Thanks
|
|
|
|
|