none
windows mobile 上写短信同时会写入邮箱 RRS feed

  • 问题

  • 最近在研究windows mobile短信编程,碰到一个奇怪问题。我往mobile收件箱中写短信,发现同时也会向outlook邮件收件箱写入一条信息,其他信箱也是类似。我想问一下,有没有人碰到我这个问题,怎么解决?

    我的代码是这样:

    pSubFolder是IMAPIFolder *类型指针,指向收件箱, IMessage *pNewmessage; pSubFolder->CreateMessage(NULL,0,&pNewmessage); SPropValue propRecipient[3]; ZeroMemory(&propRecipient, sizeof(propRecipient)); propRecipient[0].ulPropTag = PR_RECIPIENT_TYPE; //接收人类型 propRecipient[0].Value.l = MAPI_TO; propRecipient[1].ulPropTag = PR_ADDRTYPE; //地址类型 propRecipient[1].Value.lpszW = _T("SMS"); //短信 propRecipient[2].ulPropTag = PR_EMAIL_ADDRESS;//地址 propRecipient[2].Value.lpszW = _T("13912345678"); //设置接收者号码 ADRLIST adrlist; adrlist.cEntries = 1; adrlist.aEntries[0].cValues = 3;//表示设置了三个SPropValue属性 adrlist.aEntries[0].rgPropVals = (LPSPropValue)(&propRecipient); hr = pNewmessage->ModifyRecipients(MODRECIP_ADD, &adrlist); if (FAILED(hr)) { //异常处理 } MAPINAMEID idName; ZeroMemory(&idName, sizeof(MAPINAMEID)); GUID PS_MAPI={0x00020328,0,0,0xC0,0,0,0,0,0,0,0x46}; idName.lpguid = (LPGUID)&PS_MAPI; idName.ulKind = MNID_STRING; idName.Kind.lpwstrName = L"SMS:Unicode"; LPMAPINAMEID pidName = &idName; LPSPropTagArray pPropTag = NULL; hr = pNewmessage->GetIDsFromNames(1, &pidName, MAPI_CREATE, &pPropTag); CString strBody=_T("testsms"); CString strFrom=_T("14254448851"); //设置短信属性 SPropValue props[7]; ZeroMemory(&props, sizeof(props)); props[0].ulPropTag = PR_MESSAGE_CLASS; // (1)设置显示窗体类型为“短信” props[0].Value.lpszW = TEXT("IPM.SMStext"); props[1].ulPropTag = PR_SUBJECT; // (2)设置正文 props[1].Value.lpszW = (LPWSTR)strBody.GetBuffer(); props[2].ulPropTag = PR_SENDER_EMAIL_ADDRESS; props[2].Value.lpszW = (LPWSTR)strFrom.GetBuffer(); // (3)设置发送号码 props[3].ulPropTag = PR_MSG_STATUS; //(4)标志设置信息类型 props[3].Value.ul = MSGSTATUS_RECTYPE_SMS; //(5)设置具体类型 props[4].ulPropTag = PR_MESSAGE_FLAGS; props[4].Value.ul = 0; props[5].ulPropTag = CHANGE_PROP_TYPE(pPropTag[0].aulPropTag[0], PT_BOOLEAN); //设置UNICODE属性,前面用GetIDsFromNames方法获取的 props[5].Value.b = TRUE; //设置日期 SYSTEMTIME st; FILETIME ft; GetSystemTime(&st); SystemTimeToFileTime(&st,&ft); props[6].ulPropTag = PR_MESSAGE_DELIVERY_TIME; //(8)设置建立时间 props[6].Value.ft=ft; props[6].Value.b = TRUE; hr = pNewmessage->SetProps(sizeof(props) / sizeof(props[0]), (LPSPropValue)&props, NULL);//(9)设置属性 if (FAILED(hr)) { //异常处理 } pNewmessage->SaveChanges(FORCE_SAVE);

    2010年12月16日 5:30

答案

  •  这个问题我已经解决了。我自己写的程序是循环获取每个IMsgStore,然后往每个IMsgStore下的收件箱,发件箱等5个信箱各写一条短信,问题出在我获取IMsgStore指针时没判断是不是SMS仓库的,在是ActiveSync仓库时也写短信,所以写到outlook里。非常感谢Jesse Jiang。

    下面是Jesse Jiang发给我的代码 ,我有注释我是少了哪一步

    int _tmain(int argc, _TCHAR* argv[])
    
    {
    
    	HRESULT hr=0;
    
    
    
    	hr=CoInitializeEx(NULL,COINIT_MULTITHREADED);  //初始化COM
    
    
    
    	if(FAILED(hr))
    
    	{
    
    		return 0;
    
    	}
    
    
    
    	hr=MAPIInitialize(NULL);         //初始化MAPI
    
    
    
    	if(FAILED(hr))
    
    	{
    
    		return 0;
    
    	}
    
    	IMAPISession *m_pSession=NULL;
    
    	hr=MAPILogonEx(NULL,NULL,NULL,NULL,&m_pSession);
    
    	if(FAILED(hr) || NULL==m_pSession)
    
    	{
    
    		return 0;
    
    	}
    
    	IMAPITable *m_pTable = NULL;    
    
    	//HRESULT hr = 0;
    
    	SRowSet *m_pRows = NULL;  
    
    	IMsgStore *m_pMsgStore = NULL;
    
    	IMAPIFolder *m_pFolder=NULL;
    
    	SizedSPropTagArray(2 , Columns) =
    
    	{
    
    		2 ,
    
    		PR_ENTRYID, //
    
    		PR_DISPLAY_NAME //Display Name
    
    	};
    
    
    
    	if(NULL==m_pSession)
    
    	{
    
    		//异常处理
    
    	}
    
    
    
    	hr=m_pSession->GetMsgStoresTable(MAPI_UNICODE , &m_pTable);  //获取IMAPITable对象
    
    
    
    	if(FAILED(hr) || NULL==m_pTable)
    
    	{
    
    		//没有取到表结构或取表结构时出错
    
    	}
    
    
    
    	hr=m_pTable->SetColumns((LPSPropTagArray)&Columns, 0); //设置行记录结构
    
    	if(FAILED(hr))
    
    	{
    
    		//异常处理
    
    	}
    
    
    
    	while(SUCCEEDED(m_pTable->QueryRows(1, 0, &m_pRows))) //循环遍历所有行记录
    
    	{
    
    		if (NULL == m_pRows || m_pRows->cRows != 1)
    
    		{
    
    			break;
    
    		}
    
    		//查找显示名字为SMS的行记录
    
    		if (_tcsicmp(m_pRows->aRow[0].lpProps[1].Value.lpszW, _T("SMS")) == 0) //我就是少了这一个判断
    
    		{
    
    			ULONG ulMsgType;
    
    			//则获取指向短信仓库的对象
    
    			hr=m_pSession->OpenEntry(m_pRows->aRow[0].lpProps[0].Value.bin.cb,
    
    				(LPENTRYID)m_pRows->aRow[0].lpProps[0].Value.bin.lpb,
    
    				NULL,
    
    				MAPI_BEST_ACCESS,
    
    				&ulMsgType,
    
    				(LPUNKNOWN*)&m_pMsgStore);
    
    			if(FAILED(hr) || NULL==m_pMsgStore)
    
    			{
    
    				//异常处理
    
    			}
    
    			break;
    
    		}
    
    
    
    		FreeProws(m_pRows);  //释放
    
    		m_pRows = NULL;
    
    	}
    
    	if(m_pRows)    //释放资源
    
    	{
    
    		FreeProws(m_pRows);
    
    		m_pRows = NULL;
    
    	}
    
    	LPSPropValue stProps = NULL;
    
    	ULONG ulValues  = 0;
    
    	SizedSPropTagArray(1, Columns2) =
    
    	{
    
    		1,
    
    		PR_CE_IPM_INBOX_ENTRYID   /*表示要获取指向系统收件箱的IMAPIFolder对象*/
    
    	};
    
    	m_pMsgStore->GetProps((LPSPropTagArray) &Columns2, MAPI_UNICODE, &ulValues, &stProps);
    
    
    
    	hr=m_pMsgStore->OpenEntry(stProps[0].Value.bin.cb, (LPENTRYID)stProps[0].Value.bin.lpb, NULL, MAPI_MODIFY, NULL, (LPUNKNOWN*)&m_pFolder );
    
    
    
    	if(FAILED(hr) || NULL==m_pFolder)
    
    	{
    
    		//异常处理
    
    	}
    
    	MAPIFreeBuffer(stProps); 
    
    
    
    	IMessage *pNewmessage;
    
    	m_pFolder->CreateMessage(NULL,0,&pNewmessage);
    
    	SPropValue propRecipient[3];
    
    	ZeroMemory(&propRecipient, sizeof(propRecipient));
    
    	propRecipient[0].ulPropTag = PR_RECIPIENT_TYPE; //接收人类型
    
    	propRecipient[0].Value.l = MAPI_TO; 
    
    	propRecipient[1].ulPropTag = PR_ADDRTYPE; //地址类型
    
    	propRecipient[1].Value.lpszW = _T("SMS"); //短信
    
    	propRecipient[2].ulPropTag = PR_EMAIL_ADDRESS;//地址
    
    
    
    
    
    	propRecipient[2].Value.lpszW = _T("13912345678"); //设置接收者号码
    
    
    
    	ADRLIST adrlist;
    
    	adrlist.cEntries = 1;
    
    	adrlist.aEntries[0].cValues = 3;//表示设置了三个SPropValue属性
    
    	adrlist.aEntries[0].rgPropVals = (LPSPropValue)(&propRecipient);
    
    	hr = pNewmessage->ModifyRecipients(MODRECIP_ADD, &adrlist);
    
    
    
    	if (FAILED(hr))
    
    	{
    
    		//异常处理
    
    	}
    
    
    
    	MAPINAMEID idName;
    
    	ZeroMemory(&idName, sizeof(MAPINAMEID));
    
    	GUID PS_MAPI={0x00020328,0,0,0xC0,0,0,0,0,0,0,0x46};
    
    	idName.lpguid = (LPGUID)&PS_MAPI;
    
    	idName.ulKind = MNID_STRING;
    
    	idName.Kind.lpwstrName = L"SMS:Unicode";
    
    	LPMAPINAMEID pidName = &idName;
    
    	LPSPropTagArray pPropTag = NULL;
    
    	hr = pNewmessage->GetIDsFromNames(1, &pidName, MAPI_CREATE, &pPropTag);
    
    
    
    	TCHAR *strBody=_T("testsms");
    
    
    
    	TCHAR *strFrom=_T("14254448851");
    
    
    
    	//设置短信属性
    
    	SPropValue props[7];
    
    	ZeroMemory(&props, sizeof(props));
    
    	props[0].ulPropTag = PR_MESSAGE_CLASS;  // (1)设置显示窗体类型为“短信”
    
    	props[0].Value.lpszW = TEXT("IPM.SMStext");
    
    	props[1].ulPropTag = PR_SUBJECT;    // (2)设置正文
    
    	props[1].Value.lpszW = (LPWSTR)strBody; 
    
    	props[2].ulPropTag = PR_SENDER_EMAIL_ADDRESS;
    
    	props[2].Value.lpszW = (LPWSTR)strFrom; // (3)设置发送号码
    
    	props[3].ulPropTag = PR_MSG_STATUS;    //(4)标志设置信息类型
    
    	props[3].Value.ul = MSGSTATUS_RECTYPE_SMS;  //(5)设置具体类型
    
    
    
    	props[4].ulPropTag = PR_MESSAGE_FLAGS;   
    
    
    
    	props[4].Value.ul = 0; 
    
    
    
    
    
    
    
    	props[5].ulPropTag = CHANGE_PROP_TYPE(pPropTag[0].aulPropTag[0], PT_BOOLEAN); //设置UNICODE属性,前面用GetIDsFromNames方法获取的
    
    	props[5].Value.b = TRUE;
    
    
    
    	//设置日期
    
    	SYSTEMTIME st;
    
    	FILETIME ft;
    
    	GetSystemTime(&st);
    
    	SystemTimeToFileTime(&st,&ft);
    
    	props[6].ulPropTag = PR_MESSAGE_DELIVERY_TIME; //(8)设置建立时间
    
    	props[6].Value.ft=ft;
    
    	props[6].Value.b = TRUE;
    
    
    
    
    
    
    
    	hr = pNewmessage->SetProps(sizeof(props) / sizeof(props[0]), (LPSPropValue)&props, NULL);//(9)设置属性
    
    	if (FAILED(hr))
    
    	{
    
    		//异常处理
    
    	}
    
    
    
    	pNewmessage->SaveChanges(FORCE_SAVE);
    
    	return 0;
    
    }
    

    • 已标记为答案 guoxuqu 2010年12月27日 4:56
    2010年12月27日 4:54

全部回复

  • 您好,

    您是在模拟器上测试的,还是用真机测试的,您的outlook有没有配置?您能提供一些关于windows mobile 的版本信息么。

    致礼

    Jesse


    Jesse Jiang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2010年12月20日 7:34
    版主
  • 你好,

    我在所有模拟器上测试都会出现这样的问题,包括pocket pc 2003 ,smartphone 2003,windows moblie 5.0 模拟器,6.0 standard 模拟器,6.0 profession模拟器。我有测试过一部真机,是mobile 6.5 profession版本,也有这样问题。outlook我没有配置过,不清楚要配置什么?

    致礼

    guoxuqu

    2010年12月20日 8:16
  • 您的pSubFolder是如何获取的,我怀疑是这个指针的问题,我这边有一个例程,您可以参考一下

    http://www.codeproject.com/KB/windows/read-sms-on-win-mobile.aspx

    致礼

    Jesse


    Jesse Jiang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2010年12月21日 9:21
    版主
  • 我就是参考这个例子获取pSubFolder的。
    2010年12月21日 9:23
  • 很抱歉这么晚才回复,

    我在这边测试了一下,我觉得您的程序还可能是pSubFolder的问题。当然也有可能我这边的配置不对,在写如短信收件箱的时候,OUTLOOK的收件箱并没有增加邮件。

    下面是我的部分代码,希望能供您参考

    	hr=m_pTable->SetColumns((LPSPropTagArray)&Columns, 0); //设置行记录结构
    	if(FAILED(hr))
    	{
    		//异常处理
    	}
    
    	while(SUCCEEDED(m_pTable->QueryRows(1, 0, &m_pRows))) //循环遍历所有行记录
    	{
    		if (NULL == m_pRows || m_pRows->cRows != 1)
    		{
    			break;
    		}
    		//查找显示名字为SMS的行记录
    		if (_tcsicmp(m_pRows->aRow[0].lpProps[1].Value.lpszW, _T("SMS")) == 0)
    		{
    			ULONG ulMsgType;
    			//则获取指向短信仓库的对象
    			hr=m_pSession->OpenEntry(m_pRows->aRow[0].lpProps[0].Value.bin.cb,
    				(LPENTRYID)m_pRows->aRow[0].lpProps[0].Value.bin.lpb,
    				NULL,
    				MAPI_BEST_ACCESS,
    				&ulMsgType,
    				(LPUNKNOWN*)&m_pMsgStore);
    			if(FAILED(hr) || NULL==m_pMsgStore)
    			{
    				//异常处理
    			}
    			break;
    		}
    
    		FreeProws(m_pRows);  //释放
    		m_pRows = NULL;
    	}
    	if(m_pRows)    //释放资源
    	{
    		FreeProws(m_pRows);
    		m_pRows = NULL;
    	}
    	LPSPropValue stProps = NULL;
    	ULONG ulValues  = 0;
    	SizedSPropTagArray(1, Columns2) =
    	{
    		1,
    		PR_CE_IPM_INBOX_ENTRYID   /*表示要获取指向系统收件箱的IMAPIFolder对象*/
    	};
    	m_pMsgStore->GetProps((LPSPropTagArray) &Columns2, MAPI_UNICODE, &ulValues, &stProps);
    
    	hr=m_pMsgStore->OpenEntry(stProps[0].Value.bin.cb, (LPENTRYID)stProps[0].Value.bin.lpb, NULL, MAPI_MODIFY, NULL, (LPUNKNOWN*)&m_pFolder );
    
    	if(FAILED(hr) || NULL==m_pFolder)
    	{
    		//异常处理
    	}
    	MAPIFreeBuffer(stProps); 
    
    	IMessage *pNewmessage;
    	m_pFolder->CreateMessage(NULL,0,&pNewmessage);
    
    致礼

    Jesse Jiang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2010年12月24日 9:17
    版主
  • 你好

        感谢对我帖子的关注。我获取pSubFolder没错,方法跟您一样,我就是参考codeproject上面的那个例子获取pSubFolder的。您说您测试没问题,能不能把您的测试程序发一个到我的邮箱,我的邮箱是guoxuqu@163.com.万分感谢。

    致礼

    2010年12月24日 13:54
  •  这个问题我已经解决了。我自己写的程序是循环获取每个IMsgStore,然后往每个IMsgStore下的收件箱,发件箱等5个信箱各写一条短信,问题出在我获取IMsgStore指针时没判断是不是SMS仓库的,在是ActiveSync仓库时也写短信,所以写到outlook里。非常感谢Jesse Jiang。

    下面是Jesse Jiang发给我的代码 ,我有注释我是少了哪一步

    int _tmain(int argc, _TCHAR* argv[])
    
    {
    
    	HRESULT hr=0;
    
    
    
    	hr=CoInitializeEx(NULL,COINIT_MULTITHREADED);  //初始化COM
    
    
    
    	if(FAILED(hr))
    
    	{
    
    		return 0;
    
    	}
    
    
    
    	hr=MAPIInitialize(NULL);         //初始化MAPI
    
    
    
    	if(FAILED(hr))
    
    	{
    
    		return 0;
    
    	}
    
    	IMAPISession *m_pSession=NULL;
    
    	hr=MAPILogonEx(NULL,NULL,NULL,NULL,&m_pSession);
    
    	if(FAILED(hr) || NULL==m_pSession)
    
    	{
    
    		return 0;
    
    	}
    
    	IMAPITable *m_pTable = NULL;    
    
    	//HRESULT hr = 0;
    
    	SRowSet *m_pRows = NULL;  
    
    	IMsgStore *m_pMsgStore = NULL;
    
    	IMAPIFolder *m_pFolder=NULL;
    
    	SizedSPropTagArray(2 , Columns) =
    
    	{
    
    		2 ,
    
    		PR_ENTRYID, //
    
    		PR_DISPLAY_NAME //Display Name
    
    	};
    
    
    
    	if(NULL==m_pSession)
    
    	{
    
    		//异常处理
    
    	}
    
    
    
    	hr=m_pSession->GetMsgStoresTable(MAPI_UNICODE , &m_pTable);  //获取IMAPITable对象
    
    
    
    	if(FAILED(hr) || NULL==m_pTable)
    
    	{
    
    		//没有取到表结构或取表结构时出错
    
    	}
    
    
    
    	hr=m_pTable->SetColumns((LPSPropTagArray)&Columns, 0); //设置行记录结构
    
    	if(FAILED(hr))
    
    	{
    
    		//异常处理
    
    	}
    
    
    
    	while(SUCCEEDED(m_pTable->QueryRows(1, 0, &m_pRows))) //循环遍历所有行记录
    
    	{
    
    		if (NULL == m_pRows || m_pRows->cRows != 1)
    
    		{
    
    			break;
    
    		}
    
    		//查找显示名字为SMS的行记录
    
    		if (_tcsicmp(m_pRows->aRow[0].lpProps[1].Value.lpszW, _T("SMS")) == 0) //我就是少了这一个判断
    
    		{
    
    			ULONG ulMsgType;
    
    			//则获取指向短信仓库的对象
    
    			hr=m_pSession->OpenEntry(m_pRows->aRow[0].lpProps[0].Value.bin.cb,
    
    				(LPENTRYID)m_pRows->aRow[0].lpProps[0].Value.bin.lpb,
    
    				NULL,
    
    				MAPI_BEST_ACCESS,
    
    				&ulMsgType,
    
    				(LPUNKNOWN*)&m_pMsgStore);
    
    			if(FAILED(hr) || NULL==m_pMsgStore)
    
    			{
    
    				//异常处理
    
    			}
    
    			break;
    
    		}
    
    
    
    		FreeProws(m_pRows);  //释放
    
    		m_pRows = NULL;
    
    	}
    
    	if(m_pRows)    //释放资源
    
    	{
    
    		FreeProws(m_pRows);
    
    		m_pRows = NULL;
    
    	}
    
    	LPSPropValue stProps = NULL;
    
    	ULONG ulValues  = 0;
    
    	SizedSPropTagArray(1, Columns2) =
    
    	{
    
    		1,
    
    		PR_CE_IPM_INBOX_ENTRYID   /*表示要获取指向系统收件箱的IMAPIFolder对象*/
    
    	};
    
    	m_pMsgStore->GetProps((LPSPropTagArray) &Columns2, MAPI_UNICODE, &ulValues, &stProps);
    
    
    
    	hr=m_pMsgStore->OpenEntry(stProps[0].Value.bin.cb, (LPENTRYID)stProps[0].Value.bin.lpb, NULL, MAPI_MODIFY, NULL, (LPUNKNOWN*)&m_pFolder );
    
    
    
    	if(FAILED(hr) || NULL==m_pFolder)
    
    	{
    
    		//异常处理
    
    	}
    
    	MAPIFreeBuffer(stProps); 
    
    
    
    	IMessage *pNewmessage;
    
    	m_pFolder->CreateMessage(NULL,0,&pNewmessage);
    
    	SPropValue propRecipient[3];
    
    	ZeroMemory(&propRecipient, sizeof(propRecipient));
    
    	propRecipient[0].ulPropTag = PR_RECIPIENT_TYPE; //接收人类型
    
    	propRecipient[0].Value.l = MAPI_TO; 
    
    	propRecipient[1].ulPropTag = PR_ADDRTYPE; //地址类型
    
    	propRecipient[1].Value.lpszW = _T("SMS"); //短信
    
    	propRecipient[2].ulPropTag = PR_EMAIL_ADDRESS;//地址
    
    
    
    
    
    	propRecipient[2].Value.lpszW = _T("13912345678"); //设置接收者号码
    
    
    
    	ADRLIST adrlist;
    
    	adrlist.cEntries = 1;
    
    	adrlist.aEntries[0].cValues = 3;//表示设置了三个SPropValue属性
    
    	adrlist.aEntries[0].rgPropVals = (LPSPropValue)(&propRecipient);
    
    	hr = pNewmessage->ModifyRecipients(MODRECIP_ADD, &adrlist);
    
    
    
    	if (FAILED(hr))
    
    	{
    
    		//异常处理
    
    	}
    
    
    
    	MAPINAMEID idName;
    
    	ZeroMemory(&idName, sizeof(MAPINAMEID));
    
    	GUID PS_MAPI={0x00020328,0,0,0xC0,0,0,0,0,0,0,0x46};
    
    	idName.lpguid = (LPGUID)&PS_MAPI;
    
    	idName.ulKind = MNID_STRING;
    
    	idName.Kind.lpwstrName = L"SMS:Unicode";
    
    	LPMAPINAMEID pidName = &idName;
    
    	LPSPropTagArray pPropTag = NULL;
    
    	hr = pNewmessage->GetIDsFromNames(1, &pidName, MAPI_CREATE, &pPropTag);
    
    
    
    	TCHAR *strBody=_T("testsms");
    
    
    
    	TCHAR *strFrom=_T("14254448851");
    
    
    
    	//设置短信属性
    
    	SPropValue props[7];
    
    	ZeroMemory(&props, sizeof(props));
    
    	props[0].ulPropTag = PR_MESSAGE_CLASS;  // (1)设置显示窗体类型为“短信”
    
    	props[0].Value.lpszW = TEXT("IPM.SMStext");
    
    	props[1].ulPropTag = PR_SUBJECT;    // (2)设置正文
    
    	props[1].Value.lpszW = (LPWSTR)strBody; 
    
    	props[2].ulPropTag = PR_SENDER_EMAIL_ADDRESS;
    
    	props[2].Value.lpszW = (LPWSTR)strFrom; // (3)设置发送号码
    
    	props[3].ulPropTag = PR_MSG_STATUS;    //(4)标志设置信息类型
    
    	props[3].Value.ul = MSGSTATUS_RECTYPE_SMS;  //(5)设置具体类型
    
    
    
    	props[4].ulPropTag = PR_MESSAGE_FLAGS;   
    
    
    
    	props[4].Value.ul = 0; 
    
    
    
    
    
    
    
    	props[5].ulPropTag = CHANGE_PROP_TYPE(pPropTag[0].aulPropTag[0], PT_BOOLEAN); //设置UNICODE属性,前面用GetIDsFromNames方法获取的
    
    	props[5].Value.b = TRUE;
    
    
    
    	//设置日期
    
    	SYSTEMTIME st;
    
    	FILETIME ft;
    
    	GetSystemTime(&st);
    
    	SystemTimeToFileTime(&st,&ft);
    
    	props[6].ulPropTag = PR_MESSAGE_DELIVERY_TIME; //(8)设置建立时间
    
    	props[6].Value.ft=ft;
    
    	props[6].Value.b = TRUE;
    
    
    
    
    
    
    
    	hr = pNewmessage->SetProps(sizeof(props) / sizeof(props[0]), (LPSPropValue)&props, NULL);//(9)设置属性
    
    	if (FAILED(hr))
    
    	{
    
    		//异常处理
    
    	}
    
    
    
    	pNewmessage->SaveChanges(FORCE_SAVE);
    
    	return 0;
    
    }
    

    • 已标记为答案 guoxuqu 2010年12月27日 4:56
    2010年12月27日 4:54