Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
Fiz um outro codigo para envio de email para usuarios cadastrado em meu site, 3500 apr, ele esta funcionando perfeitamente, mas quando chega a 150 email enviado acontece esse erro:
>
Microsoft OLE DB Provider for ODBC Drivers error '80040e31'
[Microsoft][ODBC SQL Server Driver]Timeout expired
/loja/painelctrl/envia-news.asp, line 106
a linha 106 é essa
Set rsmuda=conexao.Execute(sqlmuda)
e a pagina para envio é essa:
<!--#INCLUDE FILE="../funcoes/funcoes_mail.asp"-->
<%
Conn_SQL = "UID=xxx; PWD=xxx; driver={SQL Server}; SERVER=xxx; DATABASE=xxx"
Set conexao = Server.CreateObject("ADODB.Connection")
conexao.Open Conn_SQL
//Verifica se e-mails a serem enviados
sqlVerifica= "SELECT COUNT (*) AS QTD FROM cob_tb_ContatoEmail WHERE id_enviado = 0"
Set rsVerifica=conexao.Execute(sqlVerifica)
if rsVerifica("QTD") = "0" then
%>
<b><br><font color="#DB251D">Não há e-mails disponíveis para envio.<br></b><br>
<%
else
// Todos os registros têm inicialmente o campo newsletter_enviado=0.
//conforme vão sendo enviadas as mensagens, o valor é trocado para 1.
sqlSend= "SELECT * FROM cob_tb_ContatoEmail WHERE id_enviado = 0"
Set rsSend=conexao.Execute(sqlSend)
//Se todos os registros tiverem o newsletter_enviado=1, ou seja,
//todas as mensagens foram enviadas, o newsletter_enviado volta para 0.
If rsSend.EOF Then
sqlTudo = "UPDATE cob_tb_ContatoEmail SET "
sqlTudo = sqlTudo &"id_enviado = 0"
sqlTudo = sqlTudo &"WHERE id_enviado = 1"
Set rsTudo=conexao.Execute(sqlTudo)
Set rsTudo=nothing
%>
<b><br><font color="#DB251D">Newsletter enviada com sucesso! <br> Total de e-mails enviados:<%=Session("Ntotal")%><br></b><br>
<%
else
// Conta total de mensagens a serem enviadas
sqlTotal="Select Count(*) AS Ntotal FROM cob_tb_ContatoEmail where id_enviado = 0"
Set rsTotal=conexao.Execute(sqlTotal)
Ntotal=rsTotal("Ntotal")
rsTotal.close
Set rsTotal=nothing
// Conta total de mensagens já enviadas
sqlSent="Select Count(*) AS Nsent FROM cob_tb_ContatoEmail where id_enviado = 1"
Set rsSent=conexao.Execute(sqlSent)
Nsent=rsSent("Nsent")
rssent.close
Set rssent=nothing
// Conta as mensagens que ainda não foram enviadas para tratar envio das últimas mensagens
sqlFalta="Select Count(*) AS Nfalta FROM cob_tb_ContatoEmail where id_enviado = 0"
Set rsFalta=conexao.Execute(sqlFalta)
Nfalta=rsfalta("Nfalta")
rsFalta.close
Set rsFalta=nothing
// Trata quantas mensagens devem ser enviadas das que sobraram
// Se o número de registros finais for menor que 10, ocorrerá um erro.
// A rotininha abaixo trata esse erro, ou seja, o último loop será feito até o número de registros restantes.
QTDnewsletter = Int(Application("NewsletterQuantidade"))
temp=0
If Nfalta<QTDnewsletter Then
temp1=Nfalta
Else
temp1=QTDnewsletter
End If
// Envia mensagens de registro em registro
// Newsletter que sera enviada para usuarios cadastrados
Set HttpObj = Server.CreateObject("AspHTTP.Conn")
HTTPObj.Url = "http://www.cobequi.com.br/loja/mail/lancamento.html"
HTTPObj.RequestMethod = "GET"
strResult = HTTPObj.GetURL
Do Until temp=temp1
Set Mailer = Server.CreateObject("SoftArtisans.SMTPMail")
Mailer.FromName = "Cobequi. O Shopping da Industria"
Mailer.FromAddress = "informativo@cobequi.com.br"
//Mailer.CC = "informativo@cobequi.com.br"
Mailer.RemoteHost = "localhost"
Mailer.AddRecipient rsSend("nm_pessoa"), rsSend("em_pessoa")
Mailer.Subject = "Lançamento Cobequi"
Mailer.HTMLText = strResult
Mailer.SendMail
Set Mailer = Nothing
// '*** Troca valor do newsletter_enviado para 1 onde campo email= email enviado
mail=rssend("em_pessoa")
sqlmuda = "UPDATE cob_tb_ContatoEmail SET "
sqlmuda = sqlmuda &"id_enviado = 1 "
sqlmuda = sqlmuda &"WHERE em_pessoa = '"&mail&"'"
Set rsmuda=conexao.Execute(sqlmuda)
Set rsmuda = Nothing
temp=temp+1
rssend.MoveNext// '***** Imagem transparente para acionar o tempo do JavaScript
TMPnewsletter = Int(Application("NewsletterTempo"))*100
%>
<img src="images/Regua1x1.gif" width="1" height="1" onLoad="window.setTimeout('getSecs()',1)">
Enviando <%=temp1%> mensagens a cada 5 segundos...<br><br>
Total: <%=Ntotal%><br>
Enviadas: <%=Nsent%><br>
<%Session("Ntotal") = Ntotal%>
<%//'***** Script que faz refresh da página %>
<script language="JavaScript">
startday = new Date();
clockStart = startday.getTime();
function initStopwatch()
{
var myTime = new Date();
var timeNow = myTime.getTime();
var timeDiff = timeNow - clockStart;
this.diffSecs = timeDiff/<%= TMPnewsletter%>;
return(this.diffSecs);
}
function getSecs()
{
var mySecs = initStopwatch();
var mySecs1 = ""+mySecs;
mySecs1= mySecs1.substring(0,mySecs1.indexOf("."));
document.forms[0].timespent.value = mySecs1
if(mySecs1><%= Application("NewsletterTempo")%>) {
location.reload();
}
window.setTimeout('getSecs()',<%= TMPnewsletter%>);
}
document.write ("<form><font color=red>Tempo decorrido: </font></a><input size=1 name=timespent style='font-family: Verdana; font-size: 10 pt; COLOR: 0000CC;border: 1 solid #FFFFFF'><font color=red>seg.</font></form>")
</script>
<br>
<%
rsSend.Close
Set rsSend = Nothing
End If
rsVerifica.Close
Set rsVerifica = Nothing
End If
%>
o codigo funciona assim:
a cada 10 segundos ele manda 15 emails e da um refresh da pagina, e assim vai, só que quando chega no email nº150 acontece aquele erro, não sei se é devido ao tempo e N° de email que estou enviando, ou se é erro no codigo.
o meu sistema esta ospedado na locaweb!!!
se algum puder me ajudar fico grato!!!
Carregando comentários...