Ir para conteúdo

POWERED BY:

Arquivado

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

marina limeira

erro no CDOSYS usando servidor google

Recommended Posts

como os emails estao no servidor google, criei uma conta para principal para envio dos formularios do site.

Em geral funciona bem, porem as vezes dependendo da lentidao do servidor google/gmail apresenta erros comuns como:

 

erros do google

 

error '80040211'

servir.asp, line 252

ou

 

CDO.Message.1 error '80040213'

The transport failed to connect to the server.

servir.asp, line 252

e nesta linha se encontra o procedimento de envio ".Send do CDOSYS"

 

uso esta configuracao:

 

.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
	   .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = servidorsmtp
	   .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10
	   .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
	   .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = contaenvioGOOGLE
	   .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = senhadaconta
	   .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = portasmtpdoGOOGLE
	   .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = usassl

Como resolver isso e teria jeito de como tratar erro para parecer uma tela para voltar em vez da mensagem de erro do ASP ?

 

 

obrigada

 

Marina

Compartilhar este post


Link para o post
Compartilhar em outros sites

smtpserverport = 25 está assim?

 

Posta o código com os valores, sem ser variáveis. Tem valores aí que são fixos e importantes. Obs. Não precisa postar usuário e senha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso é problema do gmail, mesmo, e qual é a porta que você esta usando, o que é o

.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = portasmtpdoGOOGLE

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi

 

conta google e senha ok
servidorsmtp		  = "smtp.gmail.com"
portasmtp			  = 25
usassl		 	= "true"

entao a maioria das vezes ate esta funcionando ok, a questao que o google/gmail mostrou este erro, como contornar quando ocorrer isso?

 

Marina

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente deu erro pq o e-mail era inválido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode ser instabilidade do serviço de email

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já que a conta é mesma e funciona hora sim hora não, pode ser o que o xanburzum disse mesmo, pois as configurações estão corretas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas nao disseram como tratar o erro para que volte e tente enviar novamente

sem aparecer o erro

que é sempre ruim pra quem preenche um longo formulario e ai da erro

 

conhecem o erros acima?

 

Marina

Compartilhar este post


Link para o post
Compartilhar em outros sites

Transforme seu script em uma sub recursiva, usando o OnErrorResumeNext para que verifique se houve algum erro e tentar novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma olhada neste código,este sistema permite-lhe atribuir erros personalizadas para os problemas comuns que podem ocorrer com o seu site e criar uma página de erro centralizado para mostrar erros personalizados, você pode implementá-la em qualquer sistema existente, acrescentando apenas as de linhas de código para cada script.

 

abaixo a pagina de erro:

 

 

<%
Dim strTemp	  ' string mensagem
Dim iErrorValue  ' erro query string
Dim iErrorRef	' a página que ocasionou o erro
 'Obter o erro personalizado a partir da query string #
iErrorValue = request.queryString("error")
'Obter a página que o cliente foi submetido a partir de
iErrorRef = request.serverVariables("HTTP_REFERER")

' seleccione mensagem de erro personalizada baseada em query string
Select Case iErrorValue
 Case 1
	' estabelecermos este ID de representar um erro mailer
   strTemp = "Infelizmente houve um problema "& _ 
	  'e seus dados não foram enviados."
 Case 2

   strTemp = "Você deve preencher todos os campos para enviar este formulário."
 Case 3
	' nenhum registros na pesquisa 
   strTemp = "A sua pesquisa não produziu qualquer correspondência.<br>" & _
	 "<a href=teste.asp>tente novamente</a>"
 ' <--- Você pode adicionar varios erros personalizadas --->

 Case Else
  ' Isto representa qualquer erro indefinido - ignorar, declarando 
  'o erro da query string e movimentação do processo acima
   strTemp = "Ocorreu um erro indefinido"
End Select

 'você poderia adicione as informações em um um db 
 'Custom error #.


%>

<html>
<head>
 <title>Ocorreu um erro</title>
</head>
<body>
 <center>
 <strong>
 <%=strTemp%>
 </strong>
 <br>
 <br>
Use seu botão Voltar do navegador para tentar novamente.
 </center>
</body>
</html>

 

por exemplo, usando o JMail

 

<%
Dim Mailer  ' COM objeto

Set Mailer = Server.CreateObject("jmail.smtpmail")

' Definitivamente um componente essencial de qualquer aplicativo:
On Error Resume Next
Mailer.Execute ' aqui você pode mudar para o CDOSYS
if Err <> 0 then
  ' opa, temos um erro ...
 Set Mailer = Nothing
 'Em seguida, redirecionamos para nossa página de erro. 
 ' passamos valor pela QueryString 
 Response.Redirect "customErr.asp?error=1"
else
  ' <---mensagem  sucesso -->
 Set Mailer = Nothing
end if
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

mesmo assim mostrar pagina personalizada para cada erro é ruim né Xun ?

 

a unica tela obrigatoria caso os campos que nao preencheu e sao obrigatorios ai meu script mostra os campos pendentes, ate ai normal.

 

mas a ideia do Salgado para caso der erro voltar a tentar é interessante... so nao sei como fazer,

tem algum exemplo amigos para quando der erro de envio via servidor google ?

 

 

 

obrigada

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

você podeter uma pagina de erro personalizada, mas sendo padrão para todos, este exemplo monta uma tabela de erro, ocorrendo o erro de email por exemplo você redireciona para tentar o envio novamente, ou de uma forma mais simples usa o OnErrorResumeNext , e recebendo erro retorna a pagina.Procure no fórum que existe muitos exemplos do On Error Resume Next.Maiores detalhes acesse aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basicamente crie uma função para fazer o envio do e-mail, apenas o trecho do .SEND mesmo, use o ON ERROR RESUME NEXT para que o script não pare se houver algum erro, faça um IF dentro dessa função para verificar se houve erro, se houver é só chamar novamente a função.

 

Fica +/- assim:

'Aqui vai o seu código normalmente, menos o trecho que faz efetivamente o envio
'Daqui para baixo sera a função recursiva para tentar enviar o email em caso de erro
ON ERROR RESUME NEXT
Sub ForcarEnviaEmail()
SeuObjetoDeEnvio.Send
If Err.Number <> 0 Then
	Err.Clear
	Call ForcarEnviaEmail()
End If
End Sub
Call ForcarEnviaEmail

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.