短信留在发件箱里面无法发送问题
2010-05-20 21:57
232 查看
最近碰到某个WM手机无法MAPI程序发短信的问题,短信一直留在发件箱里面无法发送,但系统的程序的确是可以的,分析了一下,可能是MAPI调用的问题,但无论怎么改设置过的字段和内容都无法解决。想了一下,打算模拟系统发短信的过程,既然是模拟首先得知道系统是怎么发,发了什么内容。所以第一步,得做一个MAPI监控对象:
监控一下短信:
void CXXXX::RegSMSSink()
{
HRESULT hr = S_OK;
//CdingStar: 把想得到的字段都加上,看系统是怎么变的:
ULONG uEventMask = fnevNewMail | fnevObjectCreated | fnevObjectDeleted |fnevObjectMoved |
fnevObjectModified | fnevObjectCopied | fnevTableModified | fnevStatusObjectModified | fnevReservedForMapi | fnevExtended | fnevCriticalError ;
//CdingStar: 这里新建一个短信对象 class CSMSAdviseSink : public IMAPIAdviseSink{...}
m_pSink = new CSMSAdviseSink();
//SMS Store
ASSERT(m_pMsgStore);
if(m_pMsgStore && m_pSink)
{
m_pSink->SetMsgStore(m_pMsgStore);
hr = m_pMsgStore->Advise(0, NULL, uEventMask, m_pSink, &m_ulAdviseSink); //注册接口
}
}
重载SMS SINK消息接收通知:
MAPIMETHOD_(ULONG,OnNotify)(ULONG cNotif, LPNOTIFICATION lpNotifications);
ULONG CSMSAdviseSink::OnNotify(ULONG cNotif, LPNOTIFICATION lpNotifications)
{
for(int i = 0; i < (int)cNotif; ++i)
{
//Message变化的类型,如新建短信,删除短信,修改
switch(lpNotifications[i].ulEventType)
{
case fnevObjectCreated:
//不知何故pNotify->lpEntryID的EntryID居然和pMessage里面query到的EntryID不一样
break;
case fnevObjectDeleted:
break;
case fnevObjectMoved:
break;
case fnevObjectModified:
//CdingStar:修改的变化主要就这里,得查看系统发送时候修改了什么
//lpNotifications[i].info.obj.lpPropTagArray是发生改变的属性值列表
//后面的等下再加,貌似调试发现2个过程结果差异很大啊
监控一下短信:
void CXXXX::RegSMSSink()
{
HRESULT hr = S_OK;
//CdingStar: 把想得到的字段都加上,看系统是怎么变的:
ULONG uEventMask = fnevNewMail | fnevObjectCreated | fnevObjectDeleted |fnevObjectMoved |
fnevObjectModified | fnevObjectCopied | fnevTableModified | fnevStatusObjectModified | fnevReservedForMapi | fnevExtended | fnevCriticalError ;
//CdingStar: 这里新建一个短信对象 class CSMSAdviseSink : public IMAPIAdviseSink{...}
m_pSink = new CSMSAdviseSink();
//SMS Store
ASSERT(m_pMsgStore);
if(m_pMsgStore && m_pSink)
{
m_pSink->SetMsgStore(m_pMsgStore);
hr = m_pMsgStore->Advise(0, NULL, uEventMask, m_pSink, &m_ulAdviseSink); //注册接口
}
}
重载SMS SINK消息接收通知:
MAPIMETHOD_(ULONG,OnNotify)(ULONG cNotif, LPNOTIFICATION lpNotifications);
ULONG CSMSAdviseSink::OnNotify(ULONG cNotif, LPNOTIFICATION lpNotifications)
{
for(int i = 0; i < (int)cNotif; ++i)
{
//Message变化的类型,如新建短信,删除短信,修改
switch(lpNotifications[i].ulEventType)
{
case fnevObjectCreated:
//不知何故pNotify->lpEntryID的EntryID居然和pMessage里面query到的EntryID不一样
break;
case fnevObjectDeleted:
break;
case fnevObjectMoved:
break;
case fnevObjectModified:
//CdingStar:修改的变化主要就这里,得查看系统发送时候修改了什么
//lpNotifications[i].info.obj.lpPropTagArray是发生改变的属性值列表
//后面的等下再加,貌似调试发现2个过程结果差异很大啊
相关文章推荐
- 短信留在发件箱里面无法发送问题 续2
- MOTO V501无法通过AT指令发送短信引起的问题
- 【Android】无法发送短信的问题
- 短信发送的流程,硬编码在了服务方法里面,优化方案
- Asp.Net服务器发送HTTP标头后无法设置内容类型的问题解决
- 关于JavaMail包和J2EE包冲突导致无法发送邮件问题
- 【原创】Windows Mobile上C#发送短信失败问题...Help!!!
- Outlook2010无法发送邮件,堆积在发件箱的解决方法
- Android发送短信字数问题
- 片段中初始化Umeng反馈,客户端发送消息无法传送到服务端问题解决
- 关于发送短信的问题
- 您的计算机剩余空间不足,程序无法自动诊断问题并向开发者发送问题
- 由于FormPanel里面没有添加对象导致页面无法显示,浏览器报脚本错误的问题
- 关于小米手机使用广播无法接受短信的问题
- 解决连接vcenter (客户端无法向服务器发送完整的请求。(基础连接已经关闭:发送时发生错误。)) 问题
- android 发送短信的拦截问题探索
- 无法发送(退信)邮件到部分域名的问题
- ajax 发送请求无法重定向问题
- 如何解决 Nokia 3650 用程序发送短信的中文乱码问题
- Ubuntu 16.04下使用VMware安装CentOS 6.9然后在里面再安装KVM之后配置网桥无法上网的问题