Barbara Bittencourt Postado Agosto 9, 2006 Denunciar Share Postado Agosto 9, 2006 Olá pessoal,Conforme o pedido do moderador, estou criando outro tópico para a minha dúvida.Tenho o seguinte código abaixo:<!--#include file="conexao.asp" --> <%'Script para envio de e-mail em formulário SqlVerifica="SELECT email FROM users" Set RsVerifica=DB.execute(SqlVerifica) If not RsVerifica.eof then do while not RsVerifica.eof email2 = email2 & lcase(RsVerifica("email")&";")' Response.Write(email2) RsVerifica.movenext loop end if %><%vErro = ""vSucesso = "sucessonews.asp"vErr = "erronews.html" vNomeForm = "Ritos de Angola" vPara = "" vFrom = "contato@ritosdeangola.com.br" vCc = email2 vAssunto = Request.Form("assunto")' vData = Date()' vData = day(vData) & "/" & month(vData) & "/" & year(vData)' vHora = Time()' vHora = hour(vHora) & "h" & minute(vHora) & "min" & second(vHora) & "s"' msg = "Newsletter " & vNomeForm' msg = msg & "submetido em" & vData & " às " & vHora & VbCrLf & VbCrLf msg = msg & Request.Form("mensagem") & VbCrLf & VbCrLf EnviaEmail msg,vFrom,vPara,vCc,vAssunto Function EnviaEmail(ByVal p_body, Byval p_from, ByVal p_to, ByVal p_bcc, Byval p_subject) On Error Resume Next Dim iMsg, Flds, iConf, status Const SERVIDOR_SMTP = "sharedrelay.dominal.com" status = true Set iMsg = Server.CreateObject("CDO.Message") Set iConf = Server.CreateObject("CDO.Configuration") Set Flds = iConf.Fields Flds("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 Flds("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SERVIDOR_SMTP Flds("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 Flds.Update With iMsg Set .Configuration = iConf .To = p_to .Bcc = p_bcc .From = p_from .Sender = p_from .Subject = p_subject .HTMLBody = p_body .Send End With If Err.number <> 0 Then status = false End If If IsObject(iMsg) Then Set iMsg = Nothing If IsObject(Flds) Then Set Flds = Nothing If IsObject(iConf) Then Set iConf = Nothing EnviaEmail = statusEnd Function '-----------------------------------------------------------Sub Resp() if vErro = "" then Response.Redirect(vSucesso) else Response.Redirect(vErr) end ifEnd Sub %>O que acontece é que o suporte do provedor disse que preciso de algo mais 'robusto' já que não está indo para todos os registrados no banco de dados. Ou seja, o banco está muito pesado. O que eu posso fazer?Obrigada!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 dark0 Postado Agosto 9, 2006 Denunciar Share Postado Agosto 9, 2006 Resumindo:O Suporte te disse, que existem muitos usuarios cadastrados .. e por isso nem todos estão chegando?Bem .. até onde eu sei .. alguns provedores tem um limite de envio em massa. Isso é feito, afim de evitar SPAMs.Por exemplo, o provedor Terra, limita o envio de uma mensagem para até 99 destinatarios.A partir disso, ele cancela o envio.Nesse caso, eu faria exatamente o envio em partes.Não sei bem como te explicar uma lógica, mas acredito, que seria algo assim:- Mostra na tela o total de destinatarios. Coloca um campo, para digitar até quantos e-mails serão enviados.- Apos dar o submit no form acima, o codigo começaria o envio de e-mails a partir do primeiro registro do banco, e só parava quando atingisse o valor digitado no campo.- Enquanto o email é enviado, seria interessante armazenar em algum lugar, que os usuarios de codigos: 0,1,2,3...99 .. já foram enviados o email.Isso serviria, para você saber de onde deve continuar o envio, quando for fazer a "proxima remessa".A logica seria mais ou menos essa aí!Não sei se funcionaria.. mas foi o que veio na minha cabeça agora..Abraço... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marcos-rj Postado Agosto 9, 2006 Denunciar Share Postado Agosto 9, 2006 você tentou a paginação que te mandei no outro tópico? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rogcesar Postado Agosto 9, 2006 Denunciar Share Postado Agosto 9, 2006 Meu programa de envio de boletins semanais: <% server.scripttimeout = 100 var_num=50 assunto="Boletim Semanal" If request.QueryString("pag")="" then response.write "[ <a href='enviaratualizacao.asp?pag=1'>Iniciar</a> ]<br>" response.write "[ <form action='enviaratualizacao.asp' method='get'>Ir p/ página: <input type='text' name='pag' size='3'> <input type='submit' value='ok'></form> ]" else ConnString= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application("bd") & "banco.mdb;" Set Conn = Server.CreateObject("ADODB.Connection") Conn.CursorLocation = 3 Conn.Open ConnString Set rstTemp = Server.CreateObject("ADODB.Recordset") rstTemp.CacheSize = var_num rstTemp.PageSize = var_num SQLString="select nome,email from tabela where tipodeenvio=1" rstTemp.Open SQLString, Conn pag=cInt(request.QueryString("pag")) rstTemp.AbsolutePage = pag response.write "<p align='right'><font color='#000000' size='1' face='Verdana,Arial,Helvetica'><b>" & rstTemp.RecordCount & " e-mails encontrados. Mostrando página " & pag & " de " & rstTemp.PageCount & "</b></font></p>" SQLSend="select nome, email, codigo from tabela where email='" & rstTemp("email") & "'" rstTemp.MoveNext if not rstTemp.Eof then for contador = 2 to var_num SQLSend=SQLSend & " or email='" & rstTemp("email") & "'" rstTemp.MoveNext If rstTemp.Eof then Exit For next end if Set obj_fso = Server.CreateObject("Scripting.FileSystemObject") Set objArquivo = obj_fso.OpenTextFile(Server.MapPath("boletim.html"),1) men objArquivo.ReadAll Set objArquivo = Nothing Set obj_fso = Nothing Set mailer = Server.CreateObject("SoftArtisans.SMTPMail") mailer.CharSet = 2 mailer.Subject = assunto mailer.HTMLText = men mailer.FromName = "Nome do Site" mailer.FromAddress = "email@site.com.br" Mailer.AddRecipient "%%nome%%", "%%email%%" mailer.RemoteHost = "smtp.nome_do_site.com.br" Set objRec = Conn.Execute(SQLSend) If mailer.MassMail (objRec) Then Response.Write "Emails Enviados" Else Response.Write "Falhou o envio." End If if rstTemp.PageCount<>1 then response.write "<p align='center'><font color='#000000' size='2' face='Verdana,Arial,Helvetica'><b>" response.write "[ <a href='enviaratualizacao.asp?pag='>Voltar ao Inicio</a> ]<br>" response.write " [ <a href='enviaratualizacao.asp?pag="&pag&"'>Repetir Página</a> ] " If pag <> rstTemp.PageCount then response.write " [ <a href='enviaratualizacao.asp?pag="&pag+1&"'>Proxima</a> ] " End If response.write "</b></p><script>window.setTimeout(""window.open('enviaratualizacao.asp?pag=" & pag+1 & "','_self','')"",5000);</script>" end if Set rsttemp = nothing Set RSQ = nothing Conn.Close Set Conn = nothing Set Mail = Nothing Set objArquivo = Nothing Set obj_fso = Nothing end if%> O script puxa o html do arquivo boletim.html e envia para a lista de emails de 50 em 50se quiser é so mudar a variavel var_numEle vai pulando sozinho de 5 em 5 segundos para os próximos 50 emailsEspero que ajude alguém[]s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 dark0 Postado Agosto 9, 2006 Denunciar Share Postado Agosto 9, 2006 cara, o seu codigo usa praticamente a logica que eu tentei explicar!Parabensabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Barbara Bittencourt Postado Agosto 11, 2006 Autor Denunciar Share Postado Agosto 11, 2006 Olá amigos,Dark, obrigada pela explicação!Rogcesar, vou testar o script!Marcos, peguei o seu código mas ainda não testei devido à falta de tempo.Estarei fazendo tudo isso hoje e assim que o fizer entro em contato com vocês ok?Desde já agradeço pela atenção e tenham um ótimo dia!Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Barbara Bittencourt Postado Agosto 11, 2006 Autor Denunciar Share Postado Agosto 11, 2006 RogCesar,Testei o seu script e está dando erro aqui, creio que deve ser por causa do objeto utilizado.Algumas variáveis não constam no meu, tive que fazer as adaptações.Estou tendo dificuldades :(Pode me ajudar? Se puder, mande-me uma mensagem em particular, ok?Obrigada!Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rogcesar Postado Agosto 14, 2006 Denunciar Share Postado Agosto 14, 2006 O componente que utilizo é o SMTPMail, ele ú muito interessante pois envia emails em massa e substitui os %%campo%% por RecordSet("campo")mas se não tiver instalado no seu provedor, entre em contato para ver os custos ou senão utilize outro componente, CDONTS, ASPMAil, etc. qualquer coisa envie uma PM Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marcos-rj Postado Agosto 17, 2006 Denunciar Share Postado Agosto 17, 2006 Grande, fiz um teste com este script, e só envia de 1 em 1! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Barbara Bittencourt
Olá pessoal,
Conforme o pedido do moderador, estou criando outro tópico para a minha dúvida.
Tenho o seguinte código abaixo:
<!--#include file="conexao.asp" -->
<%
'Script para envio de e-mail em formulário
SqlVerifica="SELECT email FROM users"
Set RsVerifica=DB.execute(SqlVerifica)
If not RsVerifica.eof then
do while not RsVerifica.eof
email2 = email2 & lcase(RsVerifica("email")&";")
' Response.Write(email2)
RsVerifica.movenext
loop
end if
%>
<%
vErro = ""
vSucesso = "sucessonews.asp"
vErr = "erronews.html"
vNomeForm = "Ritos de Angola"
vPara = ""
vFrom = "contato@ritosdeangola.com.br"
vCc = email2
vAssunto = Request.Form("assunto")
' vData = Date()
' vData = day(vData) & "/" & month(vData) & "/" & year(vData)
' vHora = Time()
' vHora = hour(vHora) & "h" & minute(vHora) & "min" & second(vHora) & "s"
' msg = "Newsletter " & vNomeForm
' msg = msg & "submetido em" & vData & " às " & vHora & VbCrLf & VbCrLf
msg = msg & Request.Form("mensagem") & VbCrLf & VbCrLf
EnviaEmail msg,vFrom,vPara,vCc,vAssunto
Function EnviaEmail(ByVal p_body, Byval p_from, ByVal p_to, ByVal p_bcc, Byval p_subject)
On Error Resume Next
Dim iMsg, Flds, iConf, status
Const SERVIDOR_SMTP = "sharedrelay.dominal.com"
status = true
Set iMsg = Server.CreateObject("CDO.Message")
Set iConf = Server.CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
Flds("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Flds("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SERVIDOR_SMTP
Flds("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
Flds.Update
With iMsg
Set .Configuration = iConf
.To = p_to
.Bcc = p_bcc
.From = p_from
.Sender = p_from
.Subject = p_subject
.HTMLBody = p_body
.Send
End With
If Err.number <> 0 Then
status = false
End If
If IsObject(iMsg) Then Set iMsg = Nothing
If IsObject(Flds) Then Set Flds = Nothing
If IsObject(iConf) Then Set iConf = Nothing
EnviaEmail = status
End Function
'-----------------------------------------------------------
Sub Resp()
if vErro = "" then
Response.Redirect(vSucesso)
else
Response.Redirect(vErr)
end if
End Sub
%>
O que acontece é que o suporte do provedor disse que preciso de algo mais 'robusto' já que não está indo para todos os registrados no banco de dados. Ou seja, o banco está muito pesado. O que eu posso fazer?
Obrigada!!
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.