Cha*_*son 4 email vba throttling exchange-server-2010
背影故事
不久前,我被问到是否可以在内部实施大规模电子邮件解决方案,以便我们能够更好地控制敏感信息.我提出了一个两步计划:在Excel/VBA/CDO中开发原型以便用户熟悉,然后分阶段.Net/SQL服务器解决方案以提高速度和稳健性.
什么改变了
进入第二阶段的3个月,管理层决定继续将电子邮件营销外包给另一家公司,这很好.第一个问题是管理层没有对公司采取行动,所以我仍然没有义务让当前的原型工作.
仍然,原型工作,或至少它的确如此.第二个问题出现在我们的Exchange 2003中继服务器与Exchange 2010交换时.事实证明,默认情况下更多的"安全"功能就像限制策略一样被转换,我一直在帮助系统管理员解决服务器配置的问题.发生的事情是,发送+100电子邮件后,服务器开始拒绝发送请求,并出现以下错误:
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
Run Code Online (Sandbox Code Playgroud)
不幸的是,我们只能在Marketing发送内容时测试服务器配置,大约每月一次.
下一步是什么?
我正在查看Excel的VBA定时器功能,以帮助限制我的主循环泵,以帮助限制发送请求.这里的第三个问题是,从我从阅读中理解的是,我能得到的最佳精度是1秒钟的计时器.与我们发送的5封电子邮件/秒相反,每秒1封电子邮件会相当长(大约4倍-5倍).这使得3小时的流程变成了一整天的流程,超过了工作人员的可用时间.我想我可以通过每秒发送5封电子邮件来反转速率,但是如果定时器具有更高的精度,则产生更多的突发影响而不是稳定速率.在我看来,这会创建一个不太受控制的过程,我不确定服务器将如何处理突发而不是稳定的速率. 我有什么选择?
如果需要更精细的计时器控制,可以使用Windows sleep API.它以毫秒为单位:
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
Run Code Online (Sandbox Code Playgroud)
我对Exchange不是很熟悉,所以我不能对限制政策发表评论.
| 归档时间: |
|
| 查看次数: |
1154 次 |
| 最近记录: |