Ir para conteúdo

POWERED BY:

Arquivado

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

SkyDive

[Resolvido] Fora de Forma: Envio de E-mail.

Recommended Posts

Ola Pessoal!!!

 

Venho aqui pedir uma ajuda a vocoes pois a coisa esta feia pro meu lado... rs

 

Faz MUITO tempo que nao programo em ASP. Uns 6 anos mais ou menos. Estou voltando agora. O bom e que é como andar de bicicleta. A gente nunca esquece. Mas reparei que muita coisa mudou.

 

Depois de uns problemas, consegui rodar o IIS e acessar as paginas em ASP numa boa. Tb ja consegui usar o banco MySQL. Meu problema esta sendo envio de e-mail e upload.

 

Antigamente eu usava uma versao free (Nem lembro se era craqueada) do aspmail. Pesquisei na net e achei o Dundas. E vi que o ASPmail é deles, ou sempre foi. Acontece que baixei a DLL DSMailer.dll, depois de uns problemas tb, consegui registra-la no Windows 7. Consegui naquelas. Ao que vem o primeiro problema.

 

Uso o regsrv32. Ele diz que fez o registro da DLL. Mas qd executo o ASP, ele fala que o componente nao esta instalado.

 

O ASPMailer ainda e usado? Ele e mesmo free??

 

Upload tb nao consegui rodar o ASPUpload.

 

 

Enfim, espero que alguem possa me ajudar pois ja pesquiisei na net. De verdade pessoal. E nao vi nada para esse problema.

 

 

Valeu a ajuda!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pela resposta Vinicius.

 

Pesquisei sobre CDOSYS reparei em algo estranho para mim: Ele usa endereco da Microsoft para funcionar? Como por exemplo http://schemas.microsoft.com/cdo/configuration/smtpserver

 

Abaixo eu achei um codigo na net. E assim mesmo que funciona?

 

<%
Dim objCDOSYSMail
Dim objCDOSYSCon
'CRIA A INSTÂNCIA COM O OBJETO CDOSYS
Set objCDOSYSMail = Server.CreateObject("CDO.Message")

'CRIA A INSTÂNCIA DO OBJETO PARA CONFIGURAÇÃO DO SMTP
Set objCDOSYSCon = Server.CreateObject ("CDO.Configuration")

'SERVIDOR DE SMTP, USE smtp.SeuDominio.com OU smtp.hostsys.com.br
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.hostsys.com.br"

'PORTA PARA COMUNICAÇÃO COM O SERVIÇO DE SMTP
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

'PORTA DO CDO
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

'ATIVAR RECURSO DE SMTP AUTENTICADO
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1

'USUÁRIO PARA SMTP AUTENTICADO
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = " suporte@hostsys.com.br "

'SENHA DO USUÁRIO PARA SMTP AUTENTICADO
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Senha do E-mail"

'TEMPO DE TIMEOUT (EM SEGUNDOS)
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30

'ATUALIZA A CONFIGURAÇÃO DO CDOSYS PARA ENVIO DO E-MAIL
objCDOSYSCon.Fields.update
Set objCDOSYSMail.Configuration = objCDOSYSCon

'NOME DO REMETENTE, E-MAIL DO REMETENTE
objCDOSYSMail.From = "Hostsys <suporte@hostsys.com.br>"

'NOME DO DESINATÁRIO, E-MAIL DO DESINATÁRIO
objCDOSYSMail.To = "Hostsys <suporte@hostsys.com.br>"

'CONFIGURA O E-MAIL QUE RECEBERÁ A RESPOSTA DESTA MENSAGEM
objCDOSYSMail.ReplyTo = "Hostsys <suporte@hostsys.com.br>"

'ASSUNTO DA MENSAGEM
objCDOSYSMail.Subject = "Teste do CDOSYS"

'CONTEÚDO DA MENSAGEM
objCDOSYSMail.TextBody = "Teste do componente CDOSYS"
'PARA ENVIO DA MENSAGEM NO FORMATO HTML, ALTERE O TextBody PARA HtmlBody
'objCDOSYSMail.HtmlBody = "<h1>Teste do componente CDOSYS</h1>"

'ENVIA A MENSAGEM
objCDOSYSMail.Send

'DESTRÓI OS OBJETOS
Set objCDOSYSMail = Nothing
Set objCDOSYSCon = Nothing

Response.write "Mensagem Enviada..."
%>

 

Lembro que qd eu usava o ASPMail era bem mais facil.

 

Agora, esse componente ja esta registrado? E so colocar o codigo e usar?

 

Ele fala pra usar um Servidor SMTP do meu dominio ou esse smtp.hostsys.com.br. Como nao tenho nenhum dominio, e estou rodando local, tenho de usar esse smtp.hostsys.com.br. E isso mesmo? Pq ele tem essas linhas e nao tenho essa senha

 

'USUÁRIO PARA SMTP AUTENTICADO
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = " suporte@hostsys.com.br "

'SENHA DO USUÁRIO PARA SMTP AUTENTICADO
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Senha do E-mail"

 

Novamente, valeu pela ajuda e desculpe possiveis perguntas obvias. E que faz tempo mesmo que nao uso isso.

 

 

Abraco!

 

Tentei esse outro codigo (bem mais curto) e tb nao rolou

 

<%
sch = "http://schemas.microsoft.com/cdo/configuration/"
Set cdoConfig = Server.CreateObject("CDO.Configuration")
cdoConfig.Fields.Item(sch & "sendusing") = 2
cdoConfig.Fields.Item(sch & "smtpserver") = "localhost"
cdoConfig.fields.update
Set cdoMessage = Server.CreateObject("CDO.Message")
Set cdoMessage.Configuration = cdoConfig
cdoMessage.From = "teste@hotmail.com"
cdoMessage.To = "teste@gmail.com"
cdoMessage.Subject = "Assunto"
cdoMessage.HTMLBody = "Teste. Envio de Email <br /> Teste. "
cdoMessage.Send
Set cdoMessage = Nothing
Set cdoConfig = Nothing
%>

 

Aparece o seguinte erro

 

 

CDO.Message.1 error '80040213'

 

The transport failed to connect to the server.

 

/testeemail.asp, line 13

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certifique-se de substituir "<enter_mail.server_here>" com "seuserver.yourdomain.com" ou "seu.ip.address.octets" ...

você esta usando o localhost, se for usar Certifique-se de estar configurado na sua maquina, senão coloque um SMTP válido

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja este exemplo que uso:

 

<%
sch = "http://schemas.microsoft.com/cdo/configuration/"
Set cdoConfig = Server.CreateObject("CDO.Configuration")

'Variaveis

Dim meuservidorsmtp
Dim minhacontaautenticada
Dim minhasenhaparaenvio
Dim emailorigem
Dim emaildestino

'Abaixo seguem algumas definicoes de variaveis para o envio de seu formulario. Por favor preencha os campos abaixo.

meuservidorsmtp = "smtp.dominio.com.br" ' Informacoes so seu servidor SMTP
minhacontaautenticada = "email@dominio.com.br" ' conta de e-mail utilizada para enviar
minhasenhaparaenvio = "senha" ' senha da conta de e-mail
emailorigem = "email@dominio.com.br" ' e-mail que indica de onde partiu a mensagem
emaildestino = "outroemail@gmail.com" ' e-mail que vai receber as mensagens do formulario

'Fim da definição manual de parâmetros.

cdoConfig.Fields.Item(sch & "sendusing") = 2
cdoConfig.Fields.Item(sch & "smtpauthenticate") = 1
cdoConfig.Fields.Item(sch & "smtpserver") = meuservidorsmtp
cdoConfig.Fields.Item(sch & "smtpserverport") = 25
cdoConfig.Fields.Item(sch & "smtpconnectiontimeout") = 30
cdoConfig.Fields.Item(sch & "sendusername") = minhacontaautenticada
cdoConfig.Fields.Item(sch & "sendpassword") = minhasenhaparaenvio
cdoConfig.fields.update
Set cdoMessage = Server.CreateObject("CDO.Message")
Set cdoMessage.Configuration = cdoConfig

cdoMessage.BodyPart.Charset = "iso-8859-1"
cdoMessage.From = emailorigem
cdoMessage.To = emaildestino
cdoMessage.Subject = "Formulario de Contato"
cdoMessage.ReplyTo = Request("email")

strBody = "Dados <br> <br>" & _
"Nome:"& Request.form("nome")& "<br>" & _
"Endereço:"& Request.form("endereco")& "<br>" & _
"Bairro:"& Request.form("bairro")& "<br>" & _
"Cidade:"& Request.form("cidade")& "<br>" & _
"CEP:"& Request.form("cep")& "<br>" & _
"Telefone:"& Request.form("tel")& "<br>" & _
"Celular:"& Request.form("cel")& "<br>" & _
"Fax:"& Request.form("fax")& "<br>" & _
"E-mail:"& Request.form("email")& "<br>" & _
"Observação"& Request.form("obs")& "<br>" 

strBody = strBody & "."
cdoMessage.HTMLBody = strBody

cdoMessage.Send

Set cdoMessage = Nothing
Set cdoConfig = Nothing

response.write "O e-mail foi processado e enviado com sucesso"
%>

 

Esse exemplo é usado num dos sites, e tem funcionado sem problemas fazem uns 3 anos.

 

Existe um exemplo no laboratório de scripts usando a conta do gmail para envio de e-mail, talvez te ajude

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sempre utilizo o CDOSYS e na minha opinião é o mais confiável, nunca tive problemas com ele, sem contar que ele esta presente em qualquer server windows, já que ele faz parte do pacote.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vinicius,

 

Usei o codigo que voce postou. Substitui as informacoes pelas minhas. No caso do meuservidorsmtp = "smtp.dominio.com.br" usei "smtp.gmail.com"

 

Qd executo a paginam ela demora DEMAIS e aparece essa mensagem de erro:

 

 

 

CDO.Message.1 error '80040213'

 

The transport failed to connect to the server.

 

/ATEC/testeemail.asp, line 55

 

 

 

Nessa linha ha esse comando: cdoMessage.Send

 

 

 

Como ja foi falado, esse componente CDO ja vem no windows 7. Ele precisa ser registrado??

 

Uma coisa que so me incomoda um pouco, e eu ter que passar a senha do email na pagina. Isso e normal?? Lembro que no ASPmail nao precisava passar senha nem nada.

 

 

Novamente, valeu pela ajuda.

 

Esqueci de dizer...

 

Eu tirei a parte do codigo

 

strBody = "Dados <br> <br>" & _
"Nome:"& Request.form("nome")& "<br>" & _
"Endereço:"& Request.form("endereco")& "<br>" & _
"Bairro:"& Request.form("bairro")& "<br>" & _
"Cidade:"& Request.form("cidade")& "<br>" & _
"CEP:"& Request.form("cep")& "<br>" & _
"Telefone:"& Request.form("tel")& "<br>" & _
"Celular:"& Request.form("cel")& "<br>" & _
"Fax:"& Request.form("fax")& "<br>" & _
"E-mail:"& Request.form("email")& "<br>" & _
"Observação"& Request.form("obs")& "<br>" 

strBody = strBody & "."

 

E nos campos arrumei os campos

 

cdoMessage.ReplyTo = "teste@gmail.com"
cdoMessage.HTMLBody = "strBody"

Compartilhar este post


Link para o post
Compartilhar em outros sites

se o SMTP esta correta, verifique se não é nenhuma instabilidade no server, isso ja aconteceu comigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas só pra ter certeza, esse componente precisa ser registrado ou já era para esse código já estar rodando?

 

Aqui no IIS parece estar tudo ok. Tudo funciona. Menos esse envio de email.

 

Uso o IIS do Windows 7.

Compartilhar este post


Link para o post
Compartilhar em outros sites

registra ele regsvr32.exe C:\CAMINHO\Cdonts.dll

Compartilhar este post


Link para o post
Compartilhar em outros sites

xanburzum,

 

Registrei tanto o cdonts.dll quanto o cdosys.dll. O windows registra mas ocorre a mesma msg de erro:

 

 

CDO.Message.1 error '80040213'

 

The transport failed to connect to the server.

 

/ATEC/testeemail.asp, line 43

 

 

Nossa ja estou quase desistindo. Como esta dificil de fazer isso... pior que eu PRECISO disso... :-/

Compartilhar este post


Link para o post
Compartilhar em outros sites

não esqueça de habilitar o SSL. Não esqueça de usar um e-mail do seu domínio como remetente, criar a conta de e-mail (verifique logando no webmail) e habilitar o uso de SMTP pelo painel do Google Apps

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

A coisa esta feia aqui viu. Inacreditavel. Nao sei o que esta de errado. Nao funciona nem a pau!!!!

 

A dll esta registrada. Tanto o Cdonts quanto o Cdosys.

 

Ja usei email do Hotmail e do Gmail. Ja mudei as configuracoes no codigo para testar ambos emails.

 

Ele continua dando erro na linha 43

 

 

Pesquisando o erro achei isso:

 

 

error '8004020e'

myscript.asp, line xx

 

and line xx is:

 

objCDOSYSMail.Send

Solution:

 

This error is caused by the email component not being able to send the email. The possible causes of this error are:

Access to the mail server thru the email component is denied. Make sure you supply a validSMTP Server in the ASP Settings window.

 

The SMTP Server requires a valid Login and Password to send the email. You must supply a correct value in the ASP Settings window.

 

The field used in the From of the Email to form's owner doesn't contain a valid email address. Verify that you're validating the field value against a valid email address.

 

Some mail servers do not allow sending email using a From email address with a domain name different than the one is configured in the web server. In this case, you should not use a field of the HTML form as the From. Instead, use a Generic email address with the same domain name as the hosted one.

 

 

Mas se ele fala que a dll esta registrada. Pq esta dando erro?

 

Qd entrei nas configuracoes do Gmail, ele so mostra config de imap. Nao tinha nada de SMTP

 

 

Sei que estou fazendo alguma besteira. Mas nao acho o problema. Esta fogo ja.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique se o servidor SMTP permite a retransmissão anônima (não autenticada). e também se o seu SMTP requer autenticação de saída,Verifique se o problema é específico para o nome de domínio (s) utilizado nos endereços de e-mail dos destinatários. Por exemplo, alguns usuários se queixaram de que eles podem enviar para os usuários em seus próprios domínios apenas, outros disseram que pode enviar para qualquer domínio, exceto os seus próprios. Pode ser simplesmente que o endereço de e-mail está sendo rejeitado, mas outras definições de configuração no servidor SMTP estão impedindo a verdadeira mensagem de erro de ser retransmitida de volta para o script ASP.Se você tiver um proxy ou firewall, verifique se o servidor web está configurado corretamente para passar por ele, que o servidor SMTP sabe sobre ele, e que o proxy permite o acesso a porta 25.

 

Tente usar um valor SendUsing de 1 (pickup) em vez de 2 (port). Por exemplo, a seguinte linha:

 

. Item (cdoSendUsingMethod) = cdoSendUsingPort

 

Torna-se

 

. Item (cdoSendUsingMethod) = cdoSendUsingPickup

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

Desculpem a demora.

 

 

retrolink, o codigo que estou usando, foi o que o Vinicius passouacima:

 

 

<%

sch = "http://schemas.microsoft.com/cdo/configuration/"

Set cdoConfig = Server.CreateObject("CDO.Configuration")

 

'Variaveis

 

Dim meuservidorsmtp

Dim minhacontaautenticada

Dim minhasenhaparaenvio

Dim emailorigem

Dim emaildestino

 

'Abaixo seguem algumas definicoes de variaveis para o envio de seu formulario. Por favor preencha os campos abaixo.

 

meuservidorsmtp = "smtp.gmail.com" ' Informacoes so seu servidor SMTP

minhacontaautenticada = "email@gmail.com" ' conta de e-mail utilizada para enviar

minhasenhaparaenvio = "aqui vai a senha" ' senha da conta de e-mail

emailorigem = "email_origem@gmail.com" ' e-mail que indica de onde partiu a mensagem

emaildestino = "email_destino@gmail.com" ' e-mail que vai receber as mensagens do formulario

 

'Fim da definição manual de parâmetros.

 

cdoConfig.Fields.Item(sch & "sendusing") = 2

cdoConfig.Fields.Item(sch & "smtpauthenticate") = 1

cdoConfig.Fields.Item(sch & "smtpserver") = meuservidorsmtp

cdoConfig.Fields.Item(sch & "smtpserverport") = 25

cdoConfig.Fields.Item(sch & "smtpconnectiontimeout") = 30

cdoConfig.Fields.Item(sch & "sendusername") = minhacontaautenticada

cdoConfig.Fields.Item(sch & "sendpassword") = minhasenhaparaenvio

cdoConfig.fields.update

Set cdoMessage = Server.CreateObject("CDO.Message")

Set cdoMessage.Configuration = cdoConfig

 

cdoMessage.BodyPart.Charset = "iso-8859-1"

cdoMessage.From = emailorigem

cdoMessage.To = emaildestino

cdoMessage.Subject = "Formulario de Contato"

cdoMessage.ReplyTo = "email_reply@gmail.com"

 

 

cdoMessage.HTMLBody = "strBody"

 

cdoMessage.Send

 

Set cdoMessage = Nothing

Set cdoConfig = Nothing

 

response.write "O e-mail foi processado e enviado com sucesso"

%>

 

 

Ele da erro justo no cdoMessage.Send. E o Erro tem a ver com o SMTP. Como nao manjo muito no IIS. ao sei se e la o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Velho, vou te passar aqui um function que eu criei para recuperar a senha de um dos projetos que estou fazendo, testei aqui e esta funcionando de boa, configura ai colocando seu servidor smtp...coloque uma conta de email deste servidor... coloque a senha... depois configura para mandar o email para um outro email e faça um teste.

 

Segue abaixo.

 

<%
function recuperasenha(vApelido,vEmail,vSenha)

Set cdoConfig = Server.CreateObject("CDO.Configuration")

Dim meuservidorsmtp       : meuservidorsmtp       = "smtp.seusite.com.br"
Dim minhacontaautenticada : minhacontaautenticada = "contato@seusite.com.br"
Dim minhasenhaparaenvio   : minhasenhaparaenvio   = "senha do email acima senha"
Dim emailorigem           : emailorigem           = "contato@seusite.com.br"
Dim emaildestino          : emaildestino          = vEmail

sch = "http://schemas.microsoft.com/cdo/configuration/"

cdoConfig.Fields.Item(sch & "sendusing")             = 2
cdoConfig.Fields.Item(sch & "smtpauthenticate")      = 1
cdoConfig.Fields.Item(sch & "smtpserver")            = meuservidorsmtp
cdoConfig.Fields.Item(sch & "smtpserverport")        = 25
cdoConfig.Fields.Item(sch & "smtpconnectiontimeout") = 30
cdoConfig.Fields.Item(sch & "sendusername")          = minhacontaautenticada
cdoConfig.Fields.Item(sch & "sendpassword")          = minhasenhaparaenvio
cdoConfig.fields.update

Set cdoMessage = Server.CreateObject("CDO.Message")
Set cdoMessage.Configuration = cdoConfig

cdoMessage.BodyPart.Charset = "utf-8"
cdoMessage.From    = "Resenlista <"& emailorigem &">"
cdoMessage.To      = emaildestino
cdoMessage.Subject = "Resenlista >> Sua senha no Resenlista"

strBody = "<font face=""Arial"" style=""font-size:12px"">" & _
"Olá <strong>"& vApelido &"</strong>!" & _
"<br><br>" & _
"Você solicitou sua senha através do nosso site." & _
"<br><br>" & _
"</font>" & _
"<table cellpadding=""10"" cellspacing=""0"" border=""0"" style=""border:1px solid #787777"">" & _
"<tbody>" & _
"<tr>" & _
"<td>" & _
"<b>" & _
"<font face=""Arial"" style=""font-size:12px"">" & _
"e-mail: <a href=""mailto:"& vEmail &""" target=""_blank"">"& vEmail &"</a>" & _
"<br>" & _
"senha: "& vSenha &"" & _
"</font>" & _
"</b>" & _
"</td>" & _
"</tr>" & _
"</tbody>" & _
"</table>" & _
"<br>" & _
"Um abraço," & _
"<br><br>" & _
"Equipe Resenlista" & _
"<br><br>" & _
"<font color=""#888888"">" & _
"RESENLISTA" & _
"<br>" & _
"Explore. Indique. Divirta-se<br>" & _
"<a href=""http://www.resenlista.com.br"" style=""color:#000"" target=""_blank"">www.resenlista.com.br</a>" & _
"</font>" & _
"</font>"

strBody = strBody & "."
cdoMessage.HTMLBody = strBody
cdoMessage.Send

Set cdoMessage = Nothing
Set cdoConfig  = Nothing

End Function

call recuperasenha("Patrique","patriqueandre@gmail.com","123456")
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

retrolink,

 

Rodei o codigo aqui e pra variar, deu erro na seguinte linha:

 

cdoMessage.Send

 

 

CDO.Message.1 error '80040213'

 

The transport failed to connect to the server.

 

/teste_email.asp, line 67

 

 

 

Cara estou achando que a dll nao esta registrada. Mas eu ja registrei duas vezes. O windows da o alert de que a dll foi registrada. Alguma coisa esta muito zuada aqui... Pior que eu estou com a maquina zerada. Coloquei o windows 7 64 bits a alguamas semanas...

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.