我正在使用ASP代码和AspEmail组件向我们的clinets发送电子邮件,但我有一些问题......
我有超过1000个电子邮件地址,我需要向他们发送电子邮件,因为我的SMTP提供商限制,我不能将它们全部作为BCC添加到一封电子邮件中但我需要单独发送每封电子邮件,因此循环播放+1000次女巫永远占用并触发服务器超时错误。
我需要每天发送这些电子邮件大约20次。
这是我的剧本:
on error resume next
msg = "SOME TEXT HERE"
Set Mail = Server.CreateObject("Persits.MailSender")
Mail.Host = "SMPT.HOST.ADDRESS"
Mail.Port = 25
Mail.CharSet = "UTF-8"
Mail.ContentTransferEncoding = "Quoted-Printable"
Mail.From = "noreply@mydomain.co.il"
MailSubject = "email subject"
Mail.Subject = Mail.EncodeHeader(MailSubject, "utf-8")
Mail.Body = msg
Mail.IsHTML = True
zBcc = split(zBcc, ";") '1000 emails here
for i=0 to Ubound(zBcc)
zBcc(i) = trim(zBcc(i))
if len(zBcc(i))>0 then
if inStr(zBcc(i), " ")>0 then
else
if (Mail.ValidateAddress(zBcc(i)) = 0) then
Mail.Reset()
Mail.AddAddress zBcc(i)
Mail.Send
end if
end if
end if
next
set Mail=nothing
答案 0 :(得分:0)
为什么不使用分页类型逻辑,即 限制100, 循环通过该批次, 一旦完成, 重新加载页面时考虑下一个偏移量,如send-email.asp?offset = 100,send-email.asp?offset = 200等。 使用该偏移值来获得下一批 重复过程直到记录集结束。
至少你可以减少超时的机会,但是你可以增加它:server.ScriptTimeout = 180
答案 1 :(得分:0)
首先,我要最大化每个周期的BCC数量。假设您可以一次发送50个BCC的电子邮件;你应该:特别是当你每天需要这个页面大约20次时。
反正。在你开始之前;最大化scripttimeout
Server.ScriptTimeout = 2147483647