Ir para conteúdo
Fórum Script Brasil
  • 0

Cadastro Ativado Por E-mail


Notax

Pergunta

Pessoal, boa tarde.

Estou tentando fazer um cadastro ativado por e-mail usando o Cdosys...

No entanto estão acontecendo os seguintes problemas:

1) apesar me mandar a mensagem, aparece o erro: Microsoft JET Database Engine error '80004005'

The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.

/rafa/servidor/cadastro/cadastro/cadastrar.asp, line 122 que vem a ser a linha: Set rsInsert = conexao.Execute(strInsert)

2) além deste erro, só está sendo possivel enviar e-mails para endereços do tipo: usuário@dominioparticular.com.br, quando coloco endereços do tipo ...@hotmail, ou @bol, ou @ig não envia e aparece outro erro: error '8004020f'

/rafa/servidor/cadastro/cadastro/cadastrar.asp, line 72 , que vem a ser a linha objCDOSYSMail.Send;

3) o último erro que está acontecendo é que estou tendo dificuldade em construir a mensagem do e-mail, principalmente no que diz respeito ao construtor do link com o código para ativação... estou tentando da seguinte forma: 'conteúdo da mensagem

objCDOSYSMail.TextBody = "http://www.revistaria.com/rafa/servidor/cadastro/cadastro/cadastrar1.asp?id="&request.form = ("codigo") mas em meu e-mail vem apenas a palavra false escrita!

segue abaixo, na íntegra, o script que estou usando, mas vale destacar que tomei o cuidado de entrar em contato com o servidor e me certifiquei de que tenho este componente habilitado em meu domínio... afora tentei encontrar exaustivamente em outros posts respostas para o meu problema e não encontrei...

será que alguém poderia me ajudar em mais essa?

<!--#include file="conexao.asp"-->
<% 
Dim conexao
site = "www.revistaria.com" 'aqui vem o nome do seu site
seumail = "revistaria@revistaria.com" 'aqui o e-mail de quem está enviando a chave de ativação para o usuário
'abaixo as variáveis criadas para cara requisição dos formulários da página cadastro.asp
Login = Request.form("txtLogin") 
Senha = Request.form("txtSenha") 
email = Request.form("txtMail")
Ende = Request.form("txtEnd")
Num = Request.form("txtNum")
Endereco = Ende&", "&Num 'aqui é uma montagem do endereço, "Ende" é o endereço seguido de vírgula ", " e acrescentado o número "Num".
Cep1 = Request.form("txtCep1")
Cep2 = Request.form("txtCep2")
Cep = Cep1&"-"&Cep2 'mesmo idéia de cima
Cidade = Request.form("txtCidade")
Estado = Request.form("txtEstado")
Tel = Request.form("txtDDD") &"-"& Request.form("txtFone")
DDD = Request.form("txtFone")
Nome = Request.form("txtNome")
codigo = day(date)&month(date)&year(date)&"abc"&Login&month(date)&year(date)&minute(date) 'aqui é o código que irá ser enviando para o usuário, poderia ser qualquer coisa, desde de que respeite um diferencial dos demais, teria ques er randômico, ou ter algo que o diferendcie dos demais...como no exemplo, tem o "Login" mais algumas datas e umas letras abc só para enrolar, poderia por um código para cada tempo, se quiser incrementar...
não = "não" 'esse não é que vai decidir se o usuário está livre para navegar nas páginas restritas... quando ele terminar de cadastar ativando seu cadastro pelo e-mail, aí ele terá uma atualização para 'sim'.
data = day(date)&"/"&month(date)&"/"&year(date) 'aqui a data que foi efetuado o cadastro
IP = Request.ServerVariables("REMOTE_ADDR") 'aqui é o IP da máquina de quem efetuou o cadastro
if Request.form("txtNome") = "" then 'caso a pessoa não coloque o nome, a mensagem de boas vindas no e-mail, irá ser para o login do usuário
user = Login
else
user = Nome
end if

'aqui irá enviar para o e-mail do usuário

'cria o objeto para o envio de e-mail 
Set objCDOSYSMail = Server.CreateObject("CDO.Message")

'cria o objeto para configuração do SMTP 
Set objCDOSYSCon = Server.CreateObject ("CDO.Configuration")

'SMTP 
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.revistaria.com"

'porta do SMTP 
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

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

'timeout 
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30 

objCDOSYSCon.Fields.update 

'atualiza a configuração do CDOSYS para o envio do e-mail 
Set objCDOSYSMail.Configuration = objCDOSYSCon

'e-mail do remetente 
objCDOSYSMail.From = "revistaria@revistaria.com"

'e-mail do destinatário 
objCDOSYSMail.To = request.form ("txtMail")

'assunto da mensagem 
objCDOSYSMail.Subject = "ativação de registro"

'conteúdo da mensagem 
objCDOSYSMail.TextBody = "http://www.revistaria.com/rafa/servidor/cadastro/cadastro/cadastrar1.asp?id="&request.form = ("codigo")
'para envio da mensagem no formato html altere o TextBody para HtmlBody 
'objCDOSYSMail.HtmlBody = request.form("mensagem")

'objCDOSYSMail.fields.update
'envia o e-mail 
objCDOSYSMail.Send 

'destrói os objetos 
Set objCDOSYSMail = Nothing 
Set objCDOSYSCon = Nothing 

'aqui são preenchimentos dos espaços vazios, no caso do usuário não colocar tudo corretamente
if Endereco = ", " then
   Endereco = "Sem endereço"
end if

if Cep = "-" then
   Cep = "sem cep"
end if

if Cidade = "" then
   Cidade = "sem cidade"
end if

if Estado = "" then
   Estado = "sem estado"
end if

if Tel = "-" then
   Tel = "sem telefone"
end if

if Nome = "" then
   Nome = "sem nome"
end if

'aqui é inserido tudo na base

strInsert = " INSERT into usuarios "
strInsert = strInsert & "(nome, login, senha, email, cidade, estado, cep, endereco, telefone, data, libera, IP, codigo)"
strInsert = strInsert + "VALUES ('" + Nome + "',"
strInsert = strInsert + "'" + Login + "',"
strInsert = strInsert + "'" + Senha + "',"
strInsert = strInsert + "'" + email + "',"
strInsert = strInsert + "'" + Cidade + "',"
strInsert = strInsert + "'" + Estado + "',"
strInsert = strInsert + "'" + Cep + "',"
strInsert = strInsert + "'" + Endereco + "',"
strInsert = strInsert + "'" + Tel + "',"
strInsert = strInsert + "'" + data + "',"
strInsert = strInsert + "'" + não + "',"
strInsert = strInsert + "'" + IP + "',"
strInsert = strInsert + "'" + codigo + "')"
'é aberta a conexao
Call abreConexao
Set rsInsert = conexao.Execute(strInsert) 
'é fechada
Call fechaConexao
Set rsInsert = Nothing


Response.redirect("enviado_cadastro.asp") 'redireciona para uma página que avise que a chave de ativação foi enviada no e-mail do destinatário. 

on error resume next
if Err.number <> 0 then
                    Call Erro("Já existe um usuário cadastrado com esse nome",Err.description)
                end if

'no caso de haver um erro, pode se fazer uma página "aviso.asp" avisando do erro com um "meta refresh redirect de 8 segundos, mais ou menos", logo em seguida redirecionando para o cadastro.asp        

'If err.number <> 0 then
'Response.redirect("aviso.asp")
'end if
%>

agradeço a atenção de todos...

forte abraço.

notax

Editado por Notax
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Amigos, já consegui resolver...

a saber:

os problemas 1 e 2 resolvi substituindo os códigos "padrão" por estes abaixo:

objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1

'porta do SMTP 
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "e-mail do remetente"

'porta do CDO 
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "sua senha smtp"

'timeout 
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30

a dúvida numero 3 consegui resolver, após muito esforço e muitas gambiarras criando um campo strBody... mas ó foi bem difícil, pelo menos pra mim!

Moderador... fique a vontade para dar este post como concluído, resolvido ou afins...

Abração a todos.

Notax

Editado por Notax
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...