此文章转载来自于:http://www.titilima.cn/show-532-1.html
这个有必要记录一下,在使用 MAPI 发送中文短信时,会发现所有的英文都很正常,但是中文却变成了 "?" 这样的乱码。在接收端用内存视图查看,会发现这个 "?" 是真正的问号字符,而不是乱码。
出现这个问题的原因是发送端未将短信属性设为 Unicode 格式,具体代码如下:
这样就获得了 Unicode 短信属性的 Tag,接下来就可以设置短信并发送了。
SPropValue props[5];
ZeroMemory(&props, sizeof (props));
props[0].ulPropTag = PR_SUBJECT_W;
props[0].Value.lpszW = L "你好,世界!" ;
props[1].ulPropTag = PR_SENDER_EMAIL_ADDRESS;
props[1].Value.lpszW = L "" ;
props[2].ulPropTag = PR_MSG_STATUS;
props[2].Value.ul = MSGSTATUS_RECTYPE_SMS;
props[3].ulPropTag = PR_MESSAGE_FLAGS; props[3].Value.ul = MSGFLAG_FROMME | MSGFLAG_UNSENT; props[4].ulPropTag = CHANGE_PROP_TYPE(pPropTag[0].aulPropTag[0], PT_BOOLEAN); props[4].Value.b = TRUE; hr = pMessage->SetProps( sizeof (props) / sizeof (props[0]), (LPSPropValue)&props, NULL); hr = pMessage->SubmitMessage(0);
另外,值得一提的是,PS_MAPI 要自己定义一下了,如果找不到的话:
GUID PS_MAPI = {0x00020328, 0, 0, 0xC0,0,0,0,0,0,0,0x46};