Ir para conteúdo

POWERED BY:

Arquivado

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

Ben - Hur

[Resolvido] Email automatico com cadastro

Recommended Posts

Olá, realizei uma página de cadastro em um banco de dados ASP. Porém, gostaria que ao ser realizado o cadastro, enviasse um email automaticamente para o EMAIL do cliente cadastrado no banco.

Tentei adaptar um código que tinha aqui, porém a mensagem não foi enviada.

 

Segue Código:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=G:/inetpub/wwwroot/TAB.mdb"

Set Verifica = Conn.Execute("SELECT login FROM cadastro_cliente WHERE (login = '"& Request.Form("login") &"') ")

If Request.QueryString("acao") = "cadastrar" then

If not Verifica.EOF then

Response.Write("Já existe")

Else

MM_editAction = CStr(Request("URL"))
If (Request.QueryString <> "") Then
MM_editAction = MM_editAction & "?" & Request.QueryString
End If

MM_abortEdit = false

MM_editQuery = ""

If (CStr(Request("MM_insert")) <> "") Then

MM_editConnection = MM_cadastro_STRING
MM_editTable = "TABELA"
MM_editRedirectUrl = "cadconfirm.asp"
MM_fieldsStr = "nome|value|endereco|value|cidade|value|estado|value|cep|value|email|value|tel1|value|tel2|value|cel|value|login|value|senha|value|nivel|value|complemento|value|sexo|value|profissao|value|instituicao|value|area|value|datanasc|value|obs|value"
MM_columnsStr = "nome|',none,''|endereco|',none,''|cidade|',none,''|estado|',none,''|cep|',none,''|email|',none,''|tel1|',none,''|tel2|',none,''|cel|',none,''|login|',none,''|senha|',none,''|nivel|',none,''|complemento|',none,''|sexo|',none,''|profissao|',none,''|instituicao|',none,''|area|',none,''|datanasc|',none,''|obs|',none,''"

MM_fields = Split(MM_fieldsStr, "|")
MM_columns = Split(MM_columnsStr, "|")

For i = LBound(MM_fields) To UBound(MM_fields) Step 2
MM_fields(i+1) = CStr(Request.Form(MM_fields(i)))
Next

If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then
If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then
MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
Else
MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
End If
End If

End If

If (CStr(Request("MM_insert")) <> "") Then

MM_tableValues = ""
MM_dbValues = ""
For i = LBound(MM_fields) To UBound(MM_fields) Step 2
FormVal = MM_fields(i+1)
MM_typeArray = Split(MM_columns(i+1),",")
Delim = MM_typeArray(0)
If (Delim = "none") Then Delim = ""
AltVal = MM_typeArray(1)
If (AltVal = "none") Then AltVal = ""
EmptyVal = MM_typeArray(2)
If (EmptyVal = "none") Then EmptyVal = ""
If (FormVal = "") Then
FormVal = EmptyVal
Else
If (AltVal <> "") Then
FormVal = AltVal
ElseIf (Delim = "'") Then
FormVal = "'" & Replace(FormVal,"'","''") & "'"
Else
FormVal = Delim + FormVal + Delim
End If
End If
If (i <> LBound(MM_fields)) Then
MM_tableValues = MM_tableValues & ","
MM_dbValues = MM_dbValues & ","
End if
MM_tableValues = MM_tableValues & MM_columns(i)
MM_dbValues = MM_dbValues & FormVal
Next
MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

If (Not MM_abortEdit) Then
Set MM_editCmd = Server.CreateObject("ADODB.Command")
MM_editCmd.ActiveConnection = MM_editConnection
MM_editCmd.CommandText = MM_editQuery
MM_editCmd.Execute



Set message = Server.CreateObject("CDO.Message")
Set conf = Server.CreateObject("CDO.Configuration")
Set param = conf.Fields

param("http://schemas.microsoft.com/cdo/configuration/sendusing")  = 2
param("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost"
param("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
param("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30 
param.Update

nome = request.Form("nome")
email = request.Form("email")
corpo2 = "TEXTO"

'Obtendo valores digitados no formulário e armazená-los nas variáveis locais 
strFrom = "<remetente@email.com.br>" 
strTo =  email
strSubject = "Cadastro Efetuado com Sucesso." 
strBody = Request.Form("corpo2")

'Retira caracteres inválidos que possam ser inclusos por acesso não autorizado
'para envio de Spam
aux1 = chr(13)
aux2 = chr(10)
regex= " | |cc:|bcc:|"& aux1 &"|"& aux2
Set objRegExp = New RegExp
objRegExp.Pattern = regex
objRegExp.IgnoreCase = True
objRegExp.Global = True

strFrom = objRegExp.Replace(strFrom,"")
strTo = objRegExp.Replace(strTo,"")
strSubject = objRegExp.Replace(strSubject,"")

Set message.configuration = conf
 message.From = strFrom
 message.To = strTo
 message.Subject  = StrSubject
 message.HtmlBody = Cstr(corpo2)


message.send

Set message = nothing
Set conf = nothing





MM_editCmd.ActiveConnection.Close

If (MM_editRedirectUrl <> "") Then
Response.Redirect(MM_editRedirectUrl)
End If
End If

End If
set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_cadastro_STRING
Recordset1.Source = "SELECT * FROM TABELA"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 3
Recordset1.Open()
Recordset1_numRows = 0

End If
End If

Verifica.Close
Set Verifica = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa ter um smtpserver válido, você esta setando o localhost...

Compartilhar este post


Link para o post
Compartilhar em outros sites

xanburzum, fiz a modificação para "smtp.meudominio.com.br", porém continua não funcionando. Eu ja consegui enviar um email através do CDOSYS com o smtp "localhost". Mas quando implementei esse envio de email no cadastro, não funcionou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou com outra dúvida também, como faço pra acrescentar no WHERE uma verificação do email também.

Set Verifica = Conn.Execute("SELECT login,email FROM cadastro_cliente WHERE (login = '"& Request.Form("login") &"') or (email = '"& Request.Form("email") &"') ")

Está certo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

depende

 

basta um ta certo para retornar registros ou tem que ser todas as alternativas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifique junto ao seu server se esta tudo ok e se esta configurado corretamente, uma dica aconselho você fazer a validacaun de login separdo do email,eu sempre uso assim

 

varlogin=Trim(request.form("login"))
varemail=Trim(request.form("email"))
varlogin=Replace(varlogin,"'","")
varemail=Replace(varemail,"'","")
<!--#include file="conn/conexao1.asp"-->
<%
 call abreconexao
'cria o recordset
Set rs=Server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM login WHERE login='"&varlogin&"'"
rs.open SQL,conexao,1,3
	if rs.eof then
	   response.redirect("logincli_form_treina.asp?msgeof=3")
	else
		if Lcase (varemail) <> Lcase(rs("email")) then
			response.redirect("logincli_form_treina.asp?msgeof=4")
			session("logado")=False
		else
			session("logado")=True
			session("email")=varemail
			session("login")=varlogin
			response.Redirect("administracao_treina.asp")
		end if
	end if
set rs=nothing
call fechaconexao%>

mas dê um response.write na sua string sql para ver o k esta sendo retornado.

 

"SELECT login,email FROM cadastro_cliente WHERE (login = '"& Request.Form("login") &"') or (email = '"& Request.Form("email") &"') ")
response.write(SQL)
response.end()

Compartilhar este post


Link para o post
Compartilhar em outros sites

então teoricamente ta certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta um tá certo, ou seja, um independe do outro.

isso pq você esta usando a clausula OR do SQL, para os dois estarem ceta você deve usar a clausula "AND", mas

como falei fica melhor fazer separado, você tem mais controle...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa!! Resolvi os 2 problemas. Mas, no Assunto da msg.. ao invés de aparecer "Cadastro Efetuado com Sucesso." com os espaços, apareceu todo junto. Será que falta alguma coisa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

onde esta gerando a mensagem?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não é isso que está eliminando os espaços ?

 

strSubject = objRegExp.Replace(strSubject,"")

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz assim

strSubject = objRegExp.Replace(strSubject," ")

Compartilhar este post


Link para o post
Compartilhar em outros sites

que bom que resolveu

 

parabens

Compartilhar este post


Link para o post
Compartilhar em outros sites

maravilha...

e nunca eskça de consultar nosso laboratório de script...

até mais

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.