首页
学习
活动
专区
圈层
工具
发布

VBA节流
EN

Stack Overflow用户
提问于 2012-07-06 15:30:03
回答 1查看 1.3K关注 0票数 4

The Back Story

不久前,有人问我,我们是否可以在内部实现大规模的电子邮件解决方案,这样我们就可以更好地控制敏感信息。我提出了一个两步方案:在Excel/VBA/CDO中开发一个原型,以便于用户熟悉,然后逐步开发.Net/SQL server解决方案,以提高速度和健壮性。

什么改变了

进入第二阶段3个月后,管理层决定将电子邮件营销外包给另一家公司,这很好。第一个问题是,管理层还没有采取行动让公司通过,所以我仍然有义务使目前的原型工作。

尽管如此,原型还是有效的,至少它确实起了作用。当我们的Exchange 2003中继服务器与Exchange 2010切换时,出现了第二个问题。事实证明,默认情况下,更多的“安全”特性会被转换成节流策略,我一直在帮助sysadmin解决运行正常的服务器配置。正在发生的情况是,发送了+100封电子邮件后,服务器开始拒绝发送请求,并出现以下错误:

代码语言:javascript
复制
The message could not be sent to the SMTP server. The transport error code is 0x800ccc67. 
The server response was 421 4.3.2 The maximum number of concurrent connections has exceeded a limit, closing transmission channel

不幸的是,我们只有当市场部有东西要发送时,我们才能测试服务器配置,这大约是每月一次。

,下一步是什么?

我看Excel的VBA计时器功能,以帮助节流我的主循环泵,以帮助节流发送请求。这里的第三个问题是,根据我从阅读中了解到的情况,我能得到的最好的精度是计时器上的1秒。每秒1封电子邮件会比我们发送的5封电子邮件长很多(大约长4倍-5倍)。这将将3个小时的流程转换为一个超过工作人员可用时间的全天流程。我想我可以通过每一秒发送5封电子邮件来反转速率,但是如果计时器上的精度更高,则会产生更多的突发影响,而不是稳定的速率。在我看来,这会创建一个控制较少的进程,并且我不确定服务器将如何处理突发事件,而不是稳定的速率。我有什么选择?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-06 15:46:24

如果您需要更精细的计时器控制,可以使用windows睡眠API。它的单位以毫秒为单位:

代码语言:javascript
复制
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Sub Testing()

'do something
Sleep(1000) 'sleep for 1 second
'continue doing something

End Sub

我对Exchange不是很熟悉,所以我不能对现有的节流策略发表评论。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11365223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档