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

(Resolvido) Problemas com o recebimento de email PHP


chris_ammy

Pergunta

Eu sou novata em programação em PHP, e tenho que desenvolver um projeto de intranet.

Estou utilizando o Xampp e phpadmyn.

Criei um formulário de cadastro de usuário. Depois que o usuário se cadastra, é enviado um email de confirmação e ativação de conta para o seu email. Fiz um teste com o meu email, e foi tranquilo. Eu recebi o email de confirmação e ativei o meu cadastro.

Cadastrei outro usuario, mas este não recebeu o email de confirmação e ativação.

Os dados desse usuario já está inserido no banco porem não esta ativado ( por causa do email).

O que poderia ser?

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Oi Leandro,

O codigo está assim:

arquivo: cadastro.php

<?php
include("config.php");

if (isset($_POST['login'])){

   //pega a sessão id do usuario
   session_start();
   $sessao    = session_id();
   $login     = $_POST['login'];
   $senha     = $_POST['senha'];
   $email     = $_POST['email'];
   $nome       = $_POST['nome'];
   $sobrenome = $_POST['sobrenome'];
   $empresa   = $_POST['empresa'];
   $depto     = $_POST['depto'];
   $fone      = $_POST['fone'];

   $sql_busca = "SELECT * FROM user WHERE login = '$login'";
   $exe_busca = mysql_query($sql_busca) or die (mysql_error());
   $num_busca = mysql_num_rows($exe_busca);

   $sql_busca2 = "SELECT * FROM user WHERE email = '$email'";
   $exe_busca2 = mysql_query($sql_busca2) or die (mysql_error());
   $num_busca2 = mysql_num_rows($exe_busca2);

   //Verifica se os campos estão preenchidos
   if ($_POST['login'] == "" || $_POST['senha'] == "" || $_POST['senha2'] == "" || $_POST['email'] == "" || $_POST['nome'] == "" || $_POST['empresa'] == "" || $_POST['depto'] == ""){
      $ac[] = "Por favor preencha todos os campos corretamente.";
   }
   //Verifica se já existe o login
   if ($num_busca > 0){
      $ac[] = "Esse login já está sendo usado por outro usuário.";
   }
   //Verifica se já existe o e-mail
   if ($num_busca2 > 0){
      $ac[] = "Esse e-mail já está sendo usado por outro usuário.";
   }
   //Verifica se o e-mail esta correto
   if (!ereg("@.", $_POST['email'])){
      $ac[] = "E-mail inválido.";
   }
   //Verifica se as duas senha são diferente
   if ($_POST['senha'] != $_POST['senha2']){
      $ac[] = "Verifique se as duas senha estão corretas.";
   }
   //Verifica se todas estão corretas
   if (!isset($ac)){
      //Inclui o cadastro no mysql
      $sql_inclu = "INSERT INTO user(login, senha, email, nome, sobrenome, empresa, depto, fone, sessao) VALUES
                    ('$login', '$senha', '$email', '$nome', '$sobrenome', '$empresa', '$depto', '$fone', '$sessao')";
      $exe_inclu = mysql_query($sql_inclu) or die (mysql_error());
      
      $tópico = "Cadastro Intranet";
      $mensagem = "<html>";
      $mensagem .= "<body>";
      $mensagem .= "Olá $login\r\n";
      $mensagem .= "<br>Você efetuou um cadastro na intranet.</br>";
      $mensagem .=    "<br>Login: $login";
      $mensagem .=    "<br>Senha: $senha";
      $mensagem .=    "<br>Ativar conta <a href='$site/active.php?ac=$sessao'>$site/active.php?ac=$sessao</a></br>";
      $mensagem .=    "</body>";
      $mensagem .=    "</html>";
      $headers = "MIME-Version: 1.0\r\n";
      $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
      $headers .= "From: intranet <$email>\r\n";
      $ac[] = "Cadastro efetuado com sucesso, verifique seu e-mail para ativa a conta.";
      //enviar para o email o login, senha e o codigo de ativação
      mail($email, $tópico, $mensagem, $headers);
   }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<style type="text/css">
<!--
.Style2 {font-size: 13px}
-->
</style>
</head>

<body>
<?php
if (isset($ac)){
   for($i=0;$i<count($ac);$i++){
      echo "<li>".$ac[$i];
   }
}
?>
<form id="form1" name="form1" method="post" action="<? $_SERVER['PHP_SELF']?>">
  <table width="100%" border="0">
    <tr>
      <td colspan="2"><div align="center"><strong>Cadastro</strong></div></td>
    </tr>
    <tr>
      <td width="13%"><span class="Style2">Nome:</span></td>
      <td width="87%"><span class="Style2">
        <label>
        <input name="nome" type="text" id="nome" />
        </label>
      </span></td>
    </tr>
    <tr>
      <td width="13%"><span class="Style2">Sobrenome:</span></td>
      <td width="87%"><span class="Style2">
        <label>
        <input name="sobrenome" type="text" id="sobrenome" />
        </label>
      </span></td>
    </tr>
    <tr>
      <td width="13%"><span class="Style2">Empresa:</span></td>
      <td width="87%"><span class="Style2">
        <label>
        <input name="empresa" type="text" id="empresa" />
        </label>
      </span></td>
    </tr>
    <tr>
      <td width="13%"><span class="Style2">Depto:</span></td>
      <td width="87%"><span class="Style2">
        <label>
        <input name="depto" type="text" id="depto" />
        </label>
      </span></td>
    </tr>
    <tr>
      <td width="13%"><span class="Style2">Fone com DDD:</span></td>
      <td width="87%"><span class="Style2">
        <label>
        <input name="fone" type="text" id="fone" />
        </label>
      </span></td>
    </tr>
    <tr>
      <td width="13%"><span class="Style2">Login:</span></td>
      <td width="87%"><span class="Style2">
        <label>
        <input name="login" type="text" id="login" />
        </label>
      </span></td>
    </tr>
    <tr>
      <td><span class="Style2">Senha:</span></td>
      <td><span class="Style2">
        <label>
        <input name="senha" type="password" id="senha" />
        </label>
      </span></td>
    </tr>
    <tr>
      <td><span class="Style2">Repetir senha: </span></td>
      <td><span class="Style2">
        <label>
        <input name="senha2" type="password" id="senha2" />
        </label>
      </span></td>
    </tr>
    <tr>
      <td><span class="Style2">E-mail:</span></td>
      <td><span class="Style2">
        <label>
        <input name="email" type="text" id="email" />
        </label>
      </span></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><span class="Style2">
        <label>
        <input type="submit" name="Submit" value="Enviar" />
        </label>
      </span></td>
    </tr>
  </table>
  <p>&nbsp;</p>
</form>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

  • 0

Tente mudar os headers para esses:

$headers = "Message-Id: <". date('YmdHis').".". md5(microtime()).".". strtoupper("$email") .">\r\n";
$headers .= "Subject: $Assunto\r\n";
$headers .= "From: intranet <email_do_remetente@xxx.com>\r\n"; // Mude para o e-mail do remetente, não pode ser o mesmo do destinatário
$headers .= "To: $email <$email>\r\n";
$headers .= "Date: ". date('D, d M Y H:i:s O') ."\r\n";
$headers .= "X-Priority: 3 (Normal)\r\n";
$headers .= "X-MSMail-Priority: Normal\r\n";
$headers .= "Content-Type: Text/HTML\r\n";

Link para o comentário
Compartilhar em outros sites

  • 0

Leandro,

substitui o trecho:

$headers = "MIME-Version: 1.0\r\n";

$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

$headers .= "From: intranet <$email>\r\n";

por

$headers = "Message-Id: <". date('YmdHis').".". md5(microtime()).".". strtoupper("$email") .">\r\n";

$headers .= "Subject: $Assunto\r\n";

$headers .= "From: intranet <email_do_remetente@xxx.com>\r\n"; // Mude para o e-mail do remetente, não pode ser o mesmo do destinatário

$headers .= "To: $email <$email>\r\n";

$headers .= "Date: ". date('D, d M Y H:i:s O') ."\r\n";

$headers .= "X-Priority: 3 (Normal)\r\n";

$headers .= "X-MSMail-Priority: Normal\r\n";

$headers .= "Content-Type: Text/HTML\r\n";

mas não funcionou. Agora nem eu estou recebendo o email do meu cadastro.

O q pode ser?

Link para o comentário
Compartilhar em outros sites

  • 0

A variavel está correta porém não adiantou nada.

Fiquei mechendo no código, ele conseguiu enviar o email para outro usuario, porem deu problema no link. O codigo ficou assim:

$tópico = "Cadastro Intranet";

$mensagem .= "Olá $login\r\n";

$mensagem .= "Você efetuou um cadastro na intranet.\r\n";

$mensagem .= "Login: $login\r\n";

$mensagem .= "Senha: $senha\r\n";

$mensagem .= "Ativar conta <a href='$site/active.php?ac=$sessao'>$site/active.php?ac=$sessao</a>\r\n";

$headers .= "X-Priority: 3 (Normal)\r\n";

$headers .= "X-MSMail-Priority: Normal\r\n";

$headers .= "Content-Type: Text/HTML\r\n";

//$headers = "MIME-Version: 1.0\r\n";

//$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

//$headers .= "From: intranet <$email>\r\n";

//$headers = "Message-Id: <". date('YmdHis').".". md5(microtime()).".". strtoupper("$email") .">\r\n";

//$headers .= "Subject: $Assunto\r\n";

$headers .= "From: intranet <cristina.oliveira@bmslog.com>\r\n"; // Mude para o e-mail do remetente, não pode ser o mesmo do destinatário

$headers .= "To: <$email>\r\n";

// $headers .= "Date: ". date('D, d M Y H:i:s O') ."\r\n";

$ac[] = "Cadastro efetuado com sucesso, verifique seu e-mail para ativa a conta.";

//enviar para o email o login, senha e o codigo de ativação

mail($email, $tópico, $mensagem, $headers);

}

}

porém sai todo desconfigurado:

Olá h

Você efetuou um cadastro na intranet.

Login: h

Senha: h

Ativar conta <a href='http://localhost/Sistema de Login/active.php?ac=rm46c6o59gu1nf5r9r90qa0ra5'>http://localhost/Sistema de Login/active.php?ac=rm46c6o59gu1nf5r9r90qa0ra5</a>

O link não está saindo.

O que posso fazer neste caso?

Link para o comentário
Compartilhar em outros sites

  • 0

Isso está acontecendo porque você comentou a linha que informa ao cliente que o e-mail está em formato HTML:

//$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
Descomente essa linha que o link chegará corretamente:
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

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...