Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Reinaldo

 Newsletter

Recommended Posts

Tenho esse script para envio de e-mail pra os clientes da empresa em lotes de 50 email por minuto de adordo com o servidor.

O prblema é o seguinte:

1 - o primeiro lote é envido corretamente,porem do segundo em diante as mensagens chegam sem titulo e sem conteúdo.

2 - aqui nesse ponto acontece o erro interno de servidor

 

 

if Mailer.SendMail then

 

Response.Write x & "-" varnome

 

else

Response.Write "Falhou o envio."

end if

 

Mas se retirar ele continua num loop sem parar.

 

bem se poderem me ajudar nessa mais uma vez agradeço.

Abaixo codigo completo:

 

<%
''Cria conexao com o banco de dados, informe corretamente o caminho do banco de dados
Set Conexao = Server.CreateObject("ADODB.Connection")
Conexao.Open "Data Source=E:\"



HTML = HTML & "<html>" 
HTML = HTML & "<head>" 
HTML = HTML & "<title>Agalma Psicanalise e editora</title>" 
HTML = HTML & "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>" 
HTML = HTML & "</head>" 
HTML = HTML & "" 
HTML = HTML & "<bgcolor='#ffffff' text='#ffffff'>" 
HTML = HTML & " "& Request.Form("titulo") &"<br>" 
HTML = HTML & " "& Request.Form("conteudo") &"" 
HTML = HTML & "</body>" 
HTML = HTML & "</html>" 


stringSQL="select id,nome,email,enviado from teste where enviado=0"
set registros = conexao.execute(stringSQL) 

if registros.eof then 

conexao.Execute("update teste set enviado=0") 


%> 

<font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b><font color="000000">Newsletter Enviada !!! 
</font></b></font> 

<% 
else 

x = 0 

while x < 7 and not registros.eof 

x = x + 1 


id = registros("id") 
vartitulo=Request.Form("titulo")
varnome = registros("Nome") 
email = registros("email")


Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Mailer.ContentType = "text/html"
Mailer.RemoteHost = "localhost"
Mailer.FromName = "Empresa"
Mailer.FromAddress = "emailempresa"
Mailer.AddRecipient "[www.empresa.com.br]", registros("email")
Mailer.Subject= vartitulo
Mailer.Bodytext = HTML

if Mailer.SendMail then

Response.Write  x & "-" varnome

else 
Response.Write "Falhou o envio." 
end if 

set Mailer = nothing 

varenviado = 1
sSQL="update teste set enviado=1 where id="&varenviado&""
Set rs=conexao.execute(sSQL)

registros.movenext 
wend 
%> 

<font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b><font color="000000"> 
Enviando pacotes de e-mails, aguarde... 
</font></b></font> 

<meta http-equiv='refresh' content='10'> 

<% 
registros.Close 
set registros = nothing 
end if 
Conexao.Close 
set Conexao = nothing 

%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]">
<html xmlns="[url="http://www.w3.org/1999/xhtml"]http://www.w3.org/1999/xhtml[/url]">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>EMPRESA</title>
</head>

<body>

</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você está dando refresh está perdendo os dados, coloque um redirect para a mesma o página chamando essa função dentro de um IF, assim ele vai fazer corretamente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não enteni muito bem sua explicação.

O refresh realmete faz com que as informações se percam, mas vou colocar o redirect de que forma?

além disso tem o erro que aparece

if Mailer.SendMail then

Response.Write x & "-" varnome---> exatemente aki <---- acontece um erro.

else 
Response.Write "Falhou o envio." 
end if

 

você está dando refresh está perdendo os dados, coloque um redirect para a mesma o página chamando essa função dentro de um IF, assim ele vai fazer corretamente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao invés de utilizar Request.Form, utilize apenas Request, ou então informe o método Get no formulário e utilize Request.QueryString.

 

Na tag de REFRESH, você deve informar a url e passar os parâmetros novamente nela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá meu amigo.

fiz o refresh dessa forma:

<%
Response.AddHeader "Refresh","10; URL=Email_massa.asp?titulo='"&vartitulo&"&conteudo='"&varconteudo&""
%>

veja bem esse erro continua:

Falhou o envio.Falhou o envio.Falhou o envio. Enviando pacotes de e-mails, aguarde...

porem os e-mails são enviando.

e no final da lista tb mostra isso:

 

Falhou o envio.Falhou o envio. error '80040211' /gerenciamento/Email_massa.asp, line 68

 

Essa é a lkilnha que se refere o erro.

 

 

if cdoMessage.Send then

 

Response.Write x & "- " & p_nome

 

else

 

Response.Write "Falhou o envio."

end if

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não criou a variável varconteudo.

 

Antes de enviar faça o teste com apenas um e-mail para ver se está instalado e funcionando o componente. Verifique se os e-mails estão corretos.

 

Troque if cdoMessage.Send then por On Erro Resume Next ... melhor verificar se há erro dessa forma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hargon meu caro obrigado pela ajuda, parece que agora está tudo ok.

Segue o codigo sem erros.

<% 

vartitulo=Request.Querystring("titulo")
varconteudo=Request.Querystring("conteudo")


HTML = HTML & "<html>" 
HTML = HTML & "<head>" 
HTML = HTML & "<title>Factae Faculade de Tecnologia e Ciências</title>" 
HTML = HTML & "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>" 
HTML = HTML & "</head>" 
HTML = HTML & "" 
HTML = HTML & "<bgcolor='#ffffff' text='#ffffff'>" 
HTML = HTML & " "& vartitulo &"<br>" 
HTML = HTML & " "& varconteudo &"" 
HTML = HTML & "</body>" 
HTML = HTML & "</html>" 

 

stringSQL="select ID,enviado,email,nome from teste where enviado=0" 
set registros = conexao.execute(stringSQL) 

if registros.eof then 

conexao.Execute("update teste set enviado=0") 
%> 

<font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b><font color="000000">Newsletter Enviada !!! 
</font></b></font> 

<% 
else 

x = 0 

while x < 3 and not registros.eof 

x = x + 1 

id = registros("ID") 
p_nome = registros("nome") 
varemail = registros("email") 
varremetente = "[email="contato@factae.edu.br"]contato@factae.edu.br[/email]"


sch = "[url="http://schemas.microsoft.com/cdo/configuration/"]http://schemas.microsoft.com/cdo/configuration/[/url]"
Set cdoConfig = Server.CreateObject("CDO.Configuration")
cdoConfig.Fields.Item(sch & "sendusing") = 2
cdoConfig.Fields.Item(sch & "smtpauthenticate") = 1
cdoConfig.Fields.Item(sch & "smtpserver") = "smtp.factae.edu.br"
cdoConfig.Fields.Item(sch & "smtpserverport") = 25
cdoConfig.Fields.Item(sch & "smtpconnectiontimeout") = 30
cdoConfig.Fields.Item(sch & "sendusername") = "[email="contato@factae.edu.br"]contato@factae.edu.br[/email]" [email=""]'conta@seu_dominio[/email]
cdoConfig.Fields.Item(sch & "sendpassword") = "123456"
cdoConfig.fields.update
Set cdoMessage = Server.CreateObject("CDO.Message")
Set cdoMessage.Configuration = cdoConfig

cdoMessage.From = varremetente
cdoMessage.To = varemail 
cdoMessage.Subject = "News Factae" 
cdoMessage.HTMLBody = HTML 


On Error Resume Next

cdoMessage.Send 

if Err <> 0 Then
Response.Write "Foi encontrado um erro (" & Err.Description & ")."
Response.End
End if

 

sSQL="update teste set enviado=1 where id=" & id &""
set str=conexao.execute(sSQL)

registros.movenext 
wend

Set cdoMessage = Nothing 
Set cdoConfig = Nothing
%> 

<font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b><font color="000000"> 
Enviando pacotes de e-mails, aguarde... 
</font></b></font> 

<%
Response.AddHeader "Refresh","10; URL=Email_massa.asp?titulo='"&vartitulo&"&conteudo='"&varconteudo&""
%>

<% 

registros.Close 
set registros = nothing 
end if 

Conexao.Close 
set Conexao = nothing 

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo, percebi uma falha após ter achado que estava tudo ok,

veja só quando aumento o numero de e-mail por bloco o que está acontecendo é que para cada conta está sendo enviado a quantidade total.

x = 0

 

while x < 40 and not registros.eof

 

x = x + 1

 

o primeiro email recebe 40 vezes a mesma mensagem e assim por diante.

 

o que deve ser?

 

 

 

Bacana Reinaldo. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem que mudar o registro tambem e nao so o contador

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mudar o registro como, não entendi pode me dar um exemplo?

 

grato.

 

 

tem que mudar o registro tambem e nao so o contador

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que disse foi que se esta mandando para o mesmo voce nao est mudando o registro que recupera o email a ser enviado

 

retirei o resolvido do topico para o povo ajudar mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Mário,

O que está acontecendo é o seguinte:

 

 

x = 0

 

while x < 10 and not registros.eof

 

x = x + 1

 

então para cada email cadastrado é enviado 10 mensagens, ou seja, o numero que for colocado while x < 10 é enviado x vezs para cada email cadastrado no banco.

 

E realmente não sei como resolver.

 

mais uma vez grato a todos.

 

 

o que disse foi que se esta mandando para o mesmo voce nao est mudando o registro que recupera o email a ser enviado

 

retirei o resolvido do topico para o povo ajudar mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

e é isso que quer?

 

se nao for tira este contador

 

ainda nao consegui entender exatamente o que quer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você terá que paginar os registros e informar o numero da pagina no AddHeader.

 

Pesquise aqui no Fórum, tem vários exemplos de paginação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pessoal pela ajuda, estou fazendo alguns teste aki, se der tudo certo avisarei de novo para fechar o topico.

abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.