自己写的用CEMAPI发送短信程序,发送中文会是乱码

问题的根本在于   保存时sms的内容没有按照unicode类型保存。设置成unicode的类型就搞定了。

代码如下: 

IMAPIFolder*   pCurFolder   =   GetMsgFolder(ID_DRAFTS);

SPropValue   Data[3];
SPropValue   propVals[1];

MAPINAMEID   mapiNameId;  
ZeroMemory(&mapiNameId,   sizeof(mapiNameId));  
GUID   PS_MAPI   =   {0x00020328,   0,   0,   0xC0,0,0,0,0,0,0,0x46};  
mapiNameId.lpguid   =   (LPGUID)&PS_MAPI;  
mapiNameId.ulKind   =   MNID_STRING;  
mapiNameId.Kind.lpwstrName   =   L "SMS:Unicode ";  
LPMAPINAMEID   pmapiNameId   =   &mapiNameId;  
LPSPropTagArray   psPropArr   =   NULL;  

hr=pCurFolder-> CreateMessage(NULL,0,&pMessage);
if(FAILED(hr))
goto   Exit;


hr   =   pMessage-> GetIDsFromNames(1,   &pmapiNameId,   MAPI_CREATE,   &psPropArr);  
if   (FAILED(hr))  
{  
if   (NULL   !=   psPropArr)  
{  
MAPIFreeBuffer(psPropArr);  
psPropArr   =   NULL;  
}  
pMessage-> Release();  
pCurFolder-> Release();  
return   hr;  
}  
if   (NULL   !=   psPropArr)  
{  
propVals[0].ulPropTag   =   CHANGE_PROP_TYPE(psPropArr[0].aulPropTag[0],   PT_BOOLEAN);  
propVals[0].Value.b   =   TRUE;  
hr   =   pMessage-> SetProps(1,   propVals,   NULL);  
ASSERT(SUCCEEDED(hr));  
if   (FAILED(hr))  
{  
MAPIFreeBuffer(psPropArr);  
psPropArr   =   NULL;  
pMessage-> Release();  
pCurFolder-> Release();  
return   hr;  
}  
MAPIFreeBuffer(psPropArr);  
}    


Data[0].ulPropTag   =   PR_SUBJECT;
Data[0].Value.lpszW   =pSms-> szSubject;


Data[1].ulPropTag   =   PR_MSG_STATUS;
Data[1].Value.ul     =   MSGSTATUS_RECTYPE_SMS;

Data[2].ulPropTag   =   PR_MESSAGE_FLAGS;
Data[2].Value.ul     =   MSGFLAG_UNSENT|MSGFLAG_FROMME;

pMessage-> SetProps(sizeof(Data)/sizeof(Data[0]),(LPSPropValue)Data,NULL);

SetMsgRecipient(pMessage,   pSms);

hr   =   pMessage-> SubmitMessage(0);  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值