邮件卡在使用兑换发送的Outlook 2013发件箱
目前我正在将应用程序迁移到新版本的过程中,我面临应用程序中的问题。基本上它是一个将向用户发送报告的VBA Access应用程序。对于邮件递送部分它采用Redemption.dll邮件卡在使用兑换发送的Outlook 2013发件箱
当前版本:
- 的Windows XP
- MS Office 2003的
- Redemption.dll v 4.5.0.812
迁移到
视窗7
的MS Office 2013
Redemption.dll v 4.5.0.812
方案1:在Win 7的机器使用redemption.dll V 4.5 .0.812当我运行应用程序时,报告交付功能运行时没有错误。但我注意到邮件卡在发件箱中。当我打开Outlook 2013邮件得到交付。所以,当我保持展望开放,并运行邮件交付功能。
方案2:现在在Win 7的机器使用开发者版本redemption.dll v 5.14过的邮件会卡在发件箱。
可能是什么原因,是否需要做代码更改,或者是否与Outlook 2013相关的一些设置更改? 任何形式的帮助将非常有用....需要它:-) 如果有需要做代码更改,是否有可能保持redemption.dll版本v 4.5(根据要求)
让我知道你是否需要更多信息。
由于
从http://www.dimastr.com/redemption/faq.htm#1
当我使用赎回发送消息时,它简单地停留在草稿文件夹
消息提交是在扩展MAPI一个两步过程:
调用IMessage :: Submit()
刷新传出的消息队列。
如果您使用的是Exchange Server,则不需要执行步骤#2,因为Exchange邮件存储与Exchange传输提供程序紧密绑定。如果您使用POP3/SMTP传输和PST文件作为消息存储,则需要执行步骤#2。要刷新消息队列中,Redemption.MAPIUtils对象创建一个实例,并调用后调用其DeliverNow方法(在CDO类似Session.DeliverNow)SafeMailItem.Send:
MailItem.Send
Set Utils = CreateObject("Redemption.MAPIUtils")
Utils.DeliverNow
但是有一个问题没有,如果你正在使用Outlook 2002或更新的PST文件和POP3/SMTP传输提供程序或安装在Internet Only模式下的Outlook 2000:无法使用扩展MAPI刷新队列。 Outlook的那部分简单地被打破了。但请注意,在任何配置中使用Exchange Server或Outlook 2000 C/W的Outlook 2002/2003(联机)都可以。
如果您在缓存模式下使用Outlook 2003或更高版本的Exchange,它将显示相同的问题。取消选中Exchange Server属性中的“使用缓存模式”以强制执行联机模式 - 这将确保邮件能够立即传送。
作为最后的手段,你可以模拟单击“发送/接收”发送消息后,在Outlook按钮:
MailItem.Send
Set Btn = Application.ActiveExplorer.CommandBars.FindControl(1, 5488)
Btn.Execute
注意,在Outlook 2003中该按钮现在是一个下拉列表中,真正的发送/接收是按钮的子项:
Set Btn = Application.ActiveExplorer.CommandBars.FindControl(1, 7095)
Btn.Execute
请注意,上面的代码假设有一个活动的资源管理器;如果以编程方式启动Outlook(并且以前未由用户启动),则不会出现这种情况,也不会显示任何文件夹。在这种情况下,你可以使用该Namespace.SyncObjects收集开始同步:
set NS = Application.GetNamespace("MAPI")
NS.Logon
Set Sync = NS.SyncObjects.Item(1)
Sync.Start
在Outlook 2010中,您还可以使用Namespace.SendAndReceive
方法。
感谢德米特里的回复。在经过它之后,我在Outlook 2013中取消选中“使用缓存模式”以强制在线模式,并且邮件确实立即发送。现在我有另一个查询,如上所述**“如果您使用Outlook 2003或更高版本的Exchange以缓存模式”**,但在我当前版本的Outlook 2003中,使用缓存模式为“已选中”,邮件交付时不存在任何问题。因此,关闭缓存模式是解决方案,或者是否有任何更改可以做,并保持缓存模式。 – DeadShot
您可以使用Namespace.SendAndReceive,但请记住它是异步的,您需要确保Outlook保持引用,直到发送/接收完成。 –
再次感谢德米特里,我错了我在错误的机器中检查使用缓存模式。它不适用于Outlook 2003和更高版本。精彩的是,不需要任何代码更改 – DeadShot