Ir para conteúdo

POWERED BY:

Arquivado

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

Paulo de Tarso F. M.

Duplicando e-mail (ASPEmail)

Recommended Posts

Galera! Bom, tô com o seguinte código:

<%	Nome = Request.Form("nome") 'Nome do solicitante	NomeDaObra = Request.Form("nome_da_obra") 'Nome da obra solicitada	TipoDaMidia = Request.Form("tipo_midia")	Email = Request.Form("email") 'E-mail do solicitante	Descricao = Request.Form("descricao") 'Descrição da finalidade da solicitação	IF NomeDaObra = "" THEN		Response.Redirect("default.asp")	ELSE	END IF	SET Mail = Server.CreateObject("Persits.MailSender")	WITH Mail	.Host = "smtp.paulodetarsowebdesign.com" 'Servidor de envio de email	.From = Email 'Email do remetente	.FromName = Nome 'Nome do remetente	.AddAddress "contato@paulodetarsowebdesign.com" 'Email do destinatário	.Subject = "Solicitação de Obra Completa" 'Assunto do email	.IsHtml = true 'Define se o email vai ser em formato html	'Corpo do email	.Body = "Nome do solicitante: " & (Nome) & "<br />"	.Body = .Body & "E-mail: " & (Email) & "<br /><hr />"	.Body = .Body & (Descricao)	.Send 'Envia o email		IF .Send = true THEN		MsgStatus = "Mensagem enviada com sucesso!"		MsgTxt = "Em breve o material solicitado será enviado para o endereço de e-mail fornecido."	ELSE		MsgStatus = "Falha no envio..."		MsgTxt = "Ocorreu algum erro durante o processo de envio de sua mensagem. A ação não pôde ser concluída. Por favor, tente novamente."	END IF		END WITH%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>( Conteúdo da página )</body><% SET Mail = nothing %>
A princípio, preciso saber pq a msg está sendo enviada 2x! Depois tenho mais perguntas com esse msm código... Mas preciso saber isso por enquanto, pq está duplicando...

 

Vlw! Té a próxima!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera! Bom, tô com o seguinte código:

<%	Nome = Request.Form("nome") 'Nome do solicitante	NomeDaObra = Request.Form("nome_da_obra") 'Nome da obra solicitada	TipoDaMidia = Request.Form("tipo_midia")	Email = Request.Form("email") 'E-mail do solicitante	Descricao = Request.Form("descricao") 'Descrição da finalidade da solicitação	IF NomeDaObra = "" THEN		Response.Redirect("default.asp")	ELSE	END IF	SET Mail = Server.CreateObject("Persits.MailSender")	WITH Mail	.Host = "smtp.paulodetarsowebdesign.com" 'Servidor de envio de email	.From = Email 'Email do remetente	.FromName = Nome 'Nome do remetente	.AddAddress "contato@paulodetarsowebdesign.com" 'Email do destinatário	.Subject = "Solicitação de Obra Completa" 'Assunto do email	.IsHtml = true 'Define se o email vai ser em formato html	'Corpo do email	.Body = "Nome do solicitante: " & (Nome) & "<br />"	.Body = .Body & "E-mail: " & (Email) & "<br /><hr />"	.Body = .Body & (Descricao)	.Send 'Envia o email		IF .Send = true THEN		MsgStatus = "Mensagem enviada com sucesso!"		MsgTxt = "Em breve o material solicitado será enviado para o endereço de e-mail fornecido."	ELSE		MsgStatus = "Falha no envio..."		MsgTxt = "Ocorreu algum erro durante o processo de envio de sua mensagem. A ação não pôde ser concluída. Por favor, tente novamente."	END IF		END WITH%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>( Conteúdo da página )</body><% SET Mail = nothing %>
A princípio, preciso saber pq a msg está sendo enviada 2x! Depois tenho mais perguntas com esse msm código... Mas preciso saber isso por enquanto, pq está duplicando...Vlw! Té a próxima!!!
Uma pergunta...Na página do formulário.. onde a pessoa preenche os dados, você está utilizando alguma função JavaScript para fazer as validações?Além do código ASP do envio, posta também a página anterior (a do formulário) pra gente ver.Acredito que a sua página deve estar sendo submetida duas vezes e vendo o código do formulário vou poder confirmar isso.Abraço!Cassiano.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então CassianoVix, não estou usando JS (ainda)... Putz, pior q soh vou poder mandar o código à tarde (16h30)... Mas assim q eu estiver com ele em mãos, coloco aki... Vlw!

Paulo

 

Na verdade nem precisa! Olhei o código com mais calma e vi onde está o problema.

 

No seu código você está chamando e método Send do objeto Mail duas vezes!

 

Isso acontece no trecho abaixo:

 

.Send 'Envia o email		IF .Send = true THEN 'Aqui ele está sendo enviado novamente!
Para resolver, elimine o primeiro .Send... e deixe apenas o do IF.

 

Inicialmente eu estava achando que poderia ser algum problema de JS fazendo com que o formulário fosse submetido 2 vezes.

 

Abraço!

Cassiano.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw CassianoVix!!! Depois coloco o resultado... Mas envolvendo o IF, está certo dessa forma q criei? Pq a idéia é assim, as variáveis MsgStatus e MsgTxt serão utilizadas na página HTML, onde serão "chamadas" dessa forma:

<h2><% = MsgStatus %></h2>
Aqui vai ficar o "subtítulo", se der certo, ficará "Mensagem enviada com sucesso!" se não, "Ocorreu um erro..." e depois:
<p><% = MsgTxt %></p>
que vai colocar o texto explicativo, se funcionou ou não...

 

Então, o IF está estruturado certinho? Só para saber se criei corretamente...

 

Vlw pelo apoio!!! T+!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw CassianoVix!!! Depois coloco o resultado... Mas envolvendo o IF, está certo dessa forma q criei? Pq a idéia é assim, as variáveis MsgStatus e MsgTxt serão utilizadas na página HTML, onde serão "chamadas" dessa forma:

<h2><% = MsgStatus %></h2>
Aqui vai ficar o "subtítulo", se der certo, ficará "Mensagem enviada com sucesso!" se não, "Ocorreu um erro..." e depois:
<p><% = MsgTxt %></p>
que vai colocar o texto explicativo, se funcionou ou não...

 

Então, o IF está estruturado certinho? Só para saber se criei corretamente...

 

Vlw pelo apoio!!! T+!

Ficou correto sim!

 

O .Send sendo usado como condição do IF vai servir tanto para enviar a mensagem quanto para já retornar se enviou ou não.. e sendo assim, sua lógica para alimentar as variáveis está correta.

 

Só mesmo eliminar aquele primeiro .Send antes do IF.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha eu aki de novo... CassianoVix, realmente, eliminando o primeiro .Send, a msg não é duplicada... Mas eu resolvi testar o Script, forçando um erro só pra ver... Coloquei um servidor de STMP inválido (inexistente), para testar a outra condição... Só que apresentou erro justamente na linha do IF:

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Mensagem do erro:

Tipo de erro:

Persits.MailSender.4 (0x800A0002)

Winsock error 11004 (0x2AFC) occurred.

/enviar_email.asp, line 31

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Linha do erro (31):
IF .Send = true THEN	MsgStatus = "Mensagem enviada com sucesso!"	MsgTxt = "Aguarde que em breve o material solicitado será enviado para o endereço de e-mail fornecido."ELSE	MsgStatus = "Falha no envio..."	MsgTxt = "Ocorreu algum erro durante o processo de envio de sua mensagem. A ação não pode ser concluída. Por favor, <a href=java script: window.history.go(-1)>tente novamente</a>."END IF
A linha 31 começa no IF...

 

Porém, analisando a web em busca da resposta para este tipo de erro, encontrei no próprio site da Persits (fabricante do ASPEmail). Veja neste link:

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Winsock error 11004 (0x2AFC) occurred

Pergunto neste caso: para que serve então a condição "ELSE" nesse script então? Pq, pela teoria, acreditava que diante de qualquer erro que não fosse do Script em si (neste caso, o erro não é de digitação nem nada, mas sim um endereço eletrônico que não existe) imaginava que ele mostraria a mensagem de erro...

 

Pq se for assim, nem preciso criar a condição IF...ELSE, já q ela naum vai me servir mto aki... O q você(s) acha(m)?

 

http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha eu aki de novo... CassianoVix, realmente, eliminando o primeiro .Send, a msg não é duplicada... Mas eu resolvi testar o Script, forçando um erro só pra ver... Coloquei um servidor de STMP inválido (inexistente), para testar a outra condição... Só que apresentou erro justamente na linha do IF:

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Mensagem do erro:

Tipo de erro:

Persits.MailSender.4 (0x800A0002)

Winsock error 11004 (0x2AFC) occurred.

/enviar_email.asp, line 31

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Linha do erro (31):
IF .Send = true THEN	MsgStatus = "Mensagem enviada com sucesso!"	MsgTxt = "Aguarde que em breve o material solicitado será enviado para o endereço de e-mail fornecido."ELSE	MsgStatus = "Falha no envio..."	MsgTxt = "Ocorreu algum erro durante o processo de envio de sua mensagem. A ação não pode ser concluída. Por favor, <a href=java script: window.history.go(-1)>tente novamente</a>."END IF
A linha 31 começa no IF...

 

Porém, analisando a web em busca da resposta para este tipo de erro, encontrei no próprio site da Persits (fabricante do ASPEmail). Veja neste link:

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Winsock error 11004 (0x2AFC) occurred

Pergunto neste caso: para que serve então a condição "ELSE" nesse script então? Pq, pela teoria, acreditava que diante de qualquer erro que não fosse do Script em si (neste caso, o erro não é de digitação nem nada, mas sim um endereço eletrônico que não existe) imaginava que ele mostraria a mensagem de erro...

 

Pq se for assim, nem preciso criar a condição IF...ELSE, já q ela naum vai me servir mto aki... O q você(s) acha(m)?

 

http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

 

Paulo

 

Realmente a condição ELSE não vai servir pra muita coisa. Na verdade, ela vai ser capaz de detectar apenas alguns tipos de erro, que não são muito comuns.

 

Esse erro de endereço inválido por exemplo, nem esse componente, nem nenhum outro componente de e-mail é capaz de detectar no ato do envio. Pelo menos até onde eu conheço! Toda mensagem é considerada enviada, a não ser por exemplo que o servidor de e-mail utilizado para envio esteja off, ou algo do tipo. Esses sim são erros para os quais possivelmente a condição ELSE serviria..

 

Se não me engano, se você tentar passar um endereço de e-mail sem o "@" por exemplo, ele também considera erro ao executar o send.

 

Mas para que funcione, você vai precisar especificar a diretiva On Error Resume Next (para que o erro seja "ignorado" e a execução da página ASP continue, possibilitando o tratamento do erro) no início da sua página ASP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Humm... Quer dizer então q, se eu especificar esse tal de On Error Resume Next, posso manter então o meu IF/ELSE? Pq é como você disse: dessa forma, talvez eu possa indicar para o usuário q ocorreu algum erro, e q por isso a mensagem não foi enviada, para ele não ficar "achando": "Será q não foi mesmo?" Mas como eu declaro o On Error Resume Next? Ele vem na frente de tudo? Ele é simplesmente só isso ou tem mais alguma coisa para colocar? Posso dar um Control Cê Control Vê? rsrsrsrs... Vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, encontrei em um artigo do iMasters, o seguinte:

On Error Resume Next Mail.Send If Err <> 0 Then Response.Write "Ocorreu o erro: " & Err.Description End If
Mas pergunto: como estou usando o WITH, basta alterar Mail.Send para .Send que vai funcionar? Depois vou testar pra ver... Qq coisa, volto a postar! Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, se interessar, a maneira postada realmente funciona! O On Error Resume Next que nosso amigo CassianoVix indicou tem que ser estruturado dessa forma mesmo:

On Error Resume Next Mail.Send If Err <> 0 Then Response.Write "Ocorreu o erro: " & Err.Description End If
Dessa forma, eu não analiso o .Send, mas sim o Err.

 

Vlw CassianoVix pelo apoio! Abraço! E caso encerrado... rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha eu aki de novo... CassianoVix, realmente, eliminando o primeiro .Send, a msg não é duplicada... Mas eu resolvi testar o Script, forçando um erro só pra ver... Coloquei um servidor de STMP inválido (inexistente), para testar a outra condição... Só que apresentou erro justamente na linha do IF:

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Mensagem do erro:

Tipo de erro:

Persits.MailSender.4 (0x800A0002)

Winsock error 11004 (0x2AFC) occurred.

/enviar_email.asp, line 31

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Linha do erro (31):
IF .Send = true THEN
	MsgStatus = "Mensagem enviada com sucesso!"
	MsgTxt = "Aguarde que em breve o material solicitado será enviado para o endereço de e-mail fornecido."
ELSE
	MsgStatus = "Falha no envio..."
	MsgTxt = "Ocorreu algum erro durante o processo de envio de sua mensagem. A ação não pode ser concluída. Por favor, <a href=java script: window.history.go(-1)>tente novamente</a>."
END IF
A linha 31 começa no IF...

 

Porém, analisando a web em busca da resposta para este tipo de erro, encontrei no próprio site da Persits (fabricante do ASPEmail). Veja neste link:

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Winsock error 11004 (0x2AFC) occurred

Pergunto neste caso: para que serve então a condição "ELSE" nesse script então? Pq, pela teoria, acreditava que diante de qualquer erro que não fosse do Script em si (neste caso, o erro não é de digitação nem nada, mas sim um endereço eletrônico que não existe) imaginava que ele mostraria a mensagem de erro...

 

Pq se for assim, nem preciso criar a condição IF...ELSE, já q ela naum vai me servir mto aki... O q você(s) acha(m)?

 

http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

 

Olá Paulo,

Não sei se você já resolveu seu problema de Ocorreu um erro: Winsock error 11004 (0x2AFC) occurred.

 

Mas como estava acontecendo comigo e consegui resolver, achei de bom grado postar aqui o que eu fiz que deu certo.

Talvez sirva para outros colegas.

 

Bom eu alterei o host aonde no meu também era smpt.algumacoisa.com.br para mail.algumacoisa.com.br e deu certo.

 

No seu código é esse:

Host = "smtp.paulodetarsowebdesign.com" 'Servidor de envio de email

Tente fazer assim:

Host = "mail.paulodetarsowebdesign.com" 'Servidor de envio de email

Espero que ajude.

 

Abraços

 

Jardel Paes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá delgisa,

 

Obrigado por compartilhar seu conhecimento conosco.

 

Continue contribuindo respondendo os tópicos mais recentes.

 

Abraços

 

Mário Monteiro

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.