MAPI中发送SMS时如何确认消息已发送成功?

alex_hua 2007-10-24 12:08:32
在用IMessage->SubmitMessage(0)函数返回后,该SMS消息并没有立即被发送,而是进入消息发送队列中。所以想问一下这种情况下,该设置什么属性能得到消息真正被发送?还有就是MAPI中的控制消息的发送确认和回执消息的属性是哪个?
...全文
335 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
载舟之水 2010-07-06
  • 打赏
  • 举报
回复
短信放在队列是因为有失败重发机制,如果你将重发去掉,基本可以立即判断是否发送失败了。

If the SMS router fails to get a response when it attempts to send an SMS message, it keeps retrying to sending the message according to a predefined short-term retry schedule. Mobile operators can configure the schedule by setting a value for the following registry key.

[HKEY_LOCAL_MACHINE\Comm\Cellular\SMS\Router]
"FailedSendAttemptsDelays" = REG_SZ:"1 5 10 30 60"

The key value is a string that contains a list of integer values, each representing the successive delay between retries. The default setting consists of the following five values: "1 5 10 30 60". The number of values tells the SMS router how many times it should retry sending the SMS message (five times by default), and the actual values specify the delay between retries.

[HKEY_LOCAL_MACHINE\Software\Microsoft\RIL\APIInfo\60]
"Timeout" = REG_DWORD


The SMS router has a configurable timeout. By default, it waits five minutes for the RIL. If you configure the SMS router with a timeout value that is shorter than the RIL driver's timeout, then the SMS router will always beat the RIL driver timeout.

意帆 2010-07-06
  • 打赏
  • 举报
回复
但是对于我来说没有多大的用处呀。
l1w1w1 2008-04-09
  • 打赏
  • 举报
回复
回帖是一种美德
无聊客 2007-11-05
  • 打赏
  • 举报
回复
检查一下
/* Flags defined in PR_MESSAGE_FLAGS */

#define MSGFLAG_READ ((ULONG) 0x00000001)
#define MSGFLAG_UNMODIFIED ((ULONG) 0x00000002)
#define MSGFLAG_SUBMIT ((ULONG) 0x00000004)
#define MSGFLAG_UNSENT ((ULONG) 0x00000008)
#define MSGFLAG_HASATTACH ((ULONG) 0x00000010)
#define MSGFLAG_FROMME ((ULONG) 0x00000020)
#define MSGFLAG_ASSOCIATED ((ULONG) 0x00000040)
#define MSGFLAG_RESEND ((ULONG) 0x00000080)
#define MSGFLAG_RN_PENDING ((ULONG) 0x00000100)
#define MSGFLAG_NRN_PENDING ((ULONG) 0x00000200)
尝试一下以下两个条件:
第一:在sent box
第二:不是MSGFLAG_UNSENT
BenjaminHuang 2007-11-05
  • 打赏
  • 举报
回复
不久前也在处理同样的问题,消息本身是没有属性去标识它本身是否被发送的(Maybe there is, but it's hiding from everyone :-) )
我认为应该要有一个发送消息到任务队列(要支持序列化和反序列化),提交到OutBox的消息在队列里创建一个对应的item,消息的发送由Worker线程去完成。
处理消息发送的时机有两个
1.点击发送时,调用 IMessage->SubmitMessage 将消息提交到 OutBox,这时通过 AdviseSink 进行消息处理
2.在 Messaging Transport 被加载的时候要创建 Worker 线程去发送OutBox 内还没有发送的邮件
alex_hua 2007-11-04
  • 打赏
  • 举报
回复
对于第一种方案来判断消息确实被成功发送,显然不是非常适合,这个在于要必要的条件成立才行。从头到脚都坚持应该像有第二种方案那样的SMS消息属性改变来判断消息确实被正确发送成功的,但看了头文件和MSDN中的所有宏描述,也看不出一个确切的,确实用来标志SMS消息被正确发送的标志。

大家在开发SMS应用程序的时候,难道都没有想判断下SMS消息确实通过网络发送出去的,而不是Submitmessage的简单正确返回?期待答案啊,恕我确实没找到方法!
无聊客 2007-11-01
  • 打赏
  • 举报
回复
submitmessage实际上只是将Message放到了Outbox,如何发送,是由SMS Transport决定的。如果你想知道Message是否被完全发送,可以通过Advisesink监视该Message的状态,一旦该Message被发送成功,可能会有两个变化,第一是移动到Sent Box(当然用户选中了保留发送成功message的选项),第二是某个message属性被改变,LZ可以去研究一下
ahao07 2007-10-26
  • 打赏
  • 举报
回复
帮顶
alex_hua 2007-10-24
  • 打赏
  • 举报
回复
不是我想要的答案!
就像任何手机中的发送确认和回执一样,基本这些都是可设置。我问的是用MAPI发送SMS时怎么样设置这两个属性。当然不可能我submitmessage后主动去等待查询,这样会阻塞,肯定有异步通知的吧???只是我目前不知道有没有属性可设置!
dyw 2007-10-24
  • 打赏
  • 举报
回复
SDK中有个SendMail例子,如果找不到发送的邮件,那么就都发出去了。
alex_hua 2007-10-24
  • 打赏
  • 举报
回复
在线等啊,高手们!

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧