目前我正处于将应用程序迁移到新版本的过程中,我在应用程序中遇到了问题。基本上它是一个VBA Access应用程序,它将向用户发送报告。对于邮件传递部分,它使用Redemption.dll
当前版本:
迁移到
Windows 7
MS Office 2013
Redemption.dll v 4.5.0.812
场景1:在运行应用程序时使用 redemption.dll v 4.5.0.812 的Win 7计算机中,报告传递功能正常运行。但我注意到的是邮件卡在发件箱中。当我打开Outlook 2013时,邮件会被发送。因此,当我保持Outlook开放并运行该功能时,邮件将被传递。
场景2:现在,在使用开发人员版本 redemption.dll v 5.14 的Win 7计算机中,邮件也会卡在发件箱中。
可能是什么原因,是否需要进行代码更改,还是与Outlook 2013相关的一些设置更改? 任何形式的帮助都非常有用......需要它很严重:-) 如果需要进行代码更改,是否可以保留redemption.dll版本v 4.5(根据要求)
如果您需要更多信息,请与我们联系。
由于
答案 0 :(得分:1)
来自http://www.dimastr.com/redemption/faq.htm#1
当我使用Redemption发送邮件时,它只会停留在“草稿”文件夹中
邮件提交是扩展MAPI中的两个步骤:
调用IMessage :: Submit()
刷新传出消息队列。
如果您使用的是Exchange Server,则不需要执行步骤2,因为Exchange邮件存储与Exchange传输提供程序紧密绑定。但是,如果您使用POP3 / SMTP传输和PST文件作为邮件存储,则需要执行步骤2。要刷新消息队列,请在调用SafeMailItem.Send之后创建Redemption.MAPIUtils对象的实例并调用其DeliverNow方法(类似于CDO中的Session.DeliverNow):
MailItem.Send
Set Utils = CreateObject("Redemption.MAPIUtils")
Utils.DeliverNow
如果您使用Outlook 2002或更高版本的PST文件以及仅在Internet模式下安装的POP3 / SMTP传输提供程序或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
方法。