Ir para conteúdo
Fórum Script Brasil
  • 0

Código De Envio De Email


Barbara Bittencourt

Pergunta

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

  • 0

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...

Link para o comentário
Compartilhar em outros sites

  • 0

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 50

se quiser é so mudar a variavel var_num

Ele vai pulando sozinho de 5 em 5 segundos para os próximos 50 emails

Espero que ajude alguém

[]s

Link para o comentário
Compartilhar em outros sites

  • 0

cara, o seu codigo usa praticamente a logica que eu tentei explicar!

Parabens

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

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!

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...