Email No Localhost or Mail Server()

Asked

Viewed 902 times

0

Hello, I have the system PHP below to register after the user’s Ubmit, the registration usually occurs, however I would like to be sent an email to the registered email, but the way I did is not being sent, can someone give a help? Thanks in advance

<?php   
require_once('classes/conecta.cadastro.php');
$pdo = conectar();

    // RECEBENDO OS DADOS PREENCHIDOS DO FORMULÁRIO !
    $nome   = $_POST ["nome"];
    $data   = $_POST ["data"];
    $sexo   = $_POST ["sexo"];
    $email  = $_POST ["email"];
    $email2 = $_POST ["email2"];
    $senha  = sha1($_POST ["senha"]);
    $senha1 = sha1($_POST ["senha1"]);
    $cpf    = $_POST ["cpf"];
    $tel    = $_POST ["tel"];
    $cel    = $_POST ["cel"];
    $cep    = $_POST ["cep"];
    $rua    = $_POST ["rua"];
    $numero = $_POST ["numero"];
    $bairro = $_POST ["bairro"];
    $cidade = $_POST ["cidade"];
    $uf     = $_POST ["uf"];
    if ($instituicao = "OUTRA") {
        $instituicao = $_POST ["outrainst"];
    } else{
        $instituicao    = $_POST ["instituição"];
    }
    $nivel  = $_POST ["nivel"];
    $curso  = $_POST ["curso"];
    $area   = $_POST ["area"];

    $turno  = $_POST ["turno"];
    $palestras  = $_POST ["palestras"];
    $cidade2    = $_POST ["cidade2"];   

    if(!empty($_POST['dias']) && count($_POST['dias']) ){
       $chgeckboxes = $_POST['dias'];
       //implode
       $horario = implode(',', $_POST['dias']);
    }

    if(!empty($_POST['Habilidades']) && count($_POST['Habilidades']) ){
       $chgeckboxes = $_POST['Habilidades'];
       //implode
       $habilidades = implode(',', $_POST['Habilidades']);
    }


    $arq = $_FILES['foto']['name'];

    $arq = $_FILES['foto']['name'];

    $arq = str_replace(" ", "_", $arq);
    $arq = str_replace("ç", "c", $arq);

    if (file_exists("imagens/".$arq)) {
        $a = 1;

        while (file_exists("imagens/[".$a."]".$arq)) {
            $a++;
        }

        $arq = "[".$a."]".$arq;
    }

    $foto = $arq;
    $aprovado = '0';

    //Prepara o cadastro
    $cadastro = $pdo->prepare("INSERT INTO dados (nome, data, sexo, email, email2, senha, senha1, cpf, tel, cel, cep, rua, numero, bairro, cidade, uf, instituicao, nivel, curso, area, turno, horario, habilidades, palestras, cidade2, foto, aprovado) VALUES (:nome, :data, :sexo, :email, :email2, :senha, :senha1, :cpf, :tel, :cel, :cep, :rua, :numero, :bairro, :cidade, :uf, :instituicao, :nivel, :curso, :area, :turno, :horario, :habilidades, :palestras, :cidade2, :foto, :aprovado)");

    $cadastro->bindValue(":nome",$nome);
    $cadastro->bindValue(":data",$data);
    $cadastro->bindValue(":sexo",$sexo);
    $cadastro->bindValue(":email",$email);
    $cadastro->bindValue(":email2",$email2);
    $cadastro->bindValue(":senha",$senha);
    $cadastro->bindValue(":senha1",$senha1);
    $cadastro->bindValue(":cpf",$cpf);
    $cadastro->bindValue(":tel",$tel);
    $cadastro->bindValue(":cel",$cel);
    $cadastro->bindValue(":cep",$cep);
    $cadastro->bindValue(":rua",$rua);
    $cadastro->bindValue(":numero",$numero);
    $cadastro->bindValue(":bairro",$bairro);
    $cadastro->bindValue(":cidade",$cidade);
    $cadastro->bindValue(":uf",$uf);
    $cadastro->bindValue(":instituicao",$instituicao);
    $cadastro->bindValue(":nivel",$nivel);
    $cadastro->bindValue(":curso",$curso);
    $cadastro->bindValue(":area",$area);
    $cadastro->bindValue(":turno",$turno);
    $cadastro->bindValue(":horario",$horario);
    $cadastro->bindValue(":habilidades",$habilidades);
    $cadastro->bindValue(":palestras",$palestras);
    $cadastro->bindValue(":cidade2",$cidade2);
    $cadastro->bindValue(":foto",$foto);
    $cadastro->bindValue(":aprovado",$aprovado);
    //Valida o cadastro
    $validar = $pdo->prepare("SELECT * FROM tab_clientes WHERE email = ?");
    if (move_uploaded_file($_FILES['foto']['tmp_name'], 'imagens/'.$arq)) {
        //Executa o cadastro
        $retorno = $cadastro->execute(); 
        if ($retorno){
            //Enviando email de confirmação de cadastro
            $assunto = "Cadastro realizado";
            $mensagem = "Seu cadastro foi realizado, em breve entraremos em 
contato!
";
            $header = "From: [email protected]";
            mail($email, $assunto, $mensagem, $header);
            header('Location: succes.php');

        } else {
            ini_set("display_errors",1);
            ini_set("display_startup_erros",1);
            error_reporting(E_ALL);
            header('Location: cadastro.php?erro=1');
        }

    } else{
        header('Location: cadastro.php?erro=1');
    } 
?>

Connection to the database via PDO:

<?php

function conectar(){
try{
    $pdo=new PDO("mysql:host=ffgdfgdfgdfgr;dbname=fdgdfg"
    ,"fdgdfg","dfgdfgdfg");
}catch(PDOException $e){
    echo $e->getMessage();
}
    return $pdo;
}

?>
  • 1

    vc is utlizando local host ? if not check if the server hosting the site has access to mail(), some servers only work with smtp

  • 1

    Uses the phpmailer class, already solves the problem above Second, in localhost Mailer does not work

  • @Marcosbrinnerpikatoons I tried so much for the host location when using a server, in case the locaweb, you know if he has access to mail()?

  • 1

    localhost would never work...

  • @gabrielfalieri Yes, I imagined that there would not even give, but I tried also by Locaweb, but unsuccessful too!

  • 1

    in localhost can not send, ai vc would have to configure your mail server, but it is a bit complex, in Locaweb you will have to use the Mailer see how in Mailer Locaweb

  • 1

    actually they have a tutorial that can help you mail() Ocaweb

  • @Marcosbrinnerpikatoons thank you very much, I will look at their tutorials and use Phpmailer, thank you very much!!

Show 3 more comments

1 answer

1


How we detected your server is not working with php mail() There are some alternatives one of them is Mailer() which is a class that uses smtp request Download Mailerphp

After downloading extract to your directory and call the classes in the email you want to send

require_once("class/class.phpmailer.php");

After that just add the following code

// Inicia a classe PHPMailer
$mail = new PHPMailer(true);

// Define os dados do servidor e tipo de conexão
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsSMTP(); // Define que a mensagem será SMTP


 try {
 $mail->Host = 'smtp.seudominio.com.br'; // Endereço do servidor SMTP (Autenticação, utilize o host smtp.seudomínio.com.br)
 $mail->SMTPAuth   = true;  // Usar autenticação SMTP (obrigatório para smtp.seudomínio.com.br)
 $mail->Port       = 587; //  Usar 587 porta SMTP
 $mail->Username = 'usuário de smtp'; // Usuário do servidor SMTP (endereço de email)
 $mail->Password = 'senha de smtp'; // Senha do servidor SMTP (senha do email usado)

 //Define o remetente
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=    
 $mail->SetFrom('[email protected]', 'Nome'); //Seu e-mail
 $mail->AddReplyTo('[email protected]', 'Nome'); //Seu e-mail
 $mail->Subject = 'Assunto';//Assunto do e-mail


 //Define os destinatário(s)
 //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 $mail->AddAddress('[email protected]', 'Teste Locaweb');

 //Campos abaixo são opcionais 
 //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 //$mail->AddCC('[email protected]', 'Destinatario'); // Copia
 //$mail->AddBCC('[email protected]', 'Destinatario2`'); // Cópia Oculta
 //$mail->AddAttachment('images/phpmailer.gif');      // Adicionar um anexo


 //Define o corpo do email
 $mail->MsgHTML('corpo do email'); 

 ////Caso queira colocar o conteudo de um arquivo utilize o método abaixo ao invés da mensagem no corpo do e-mail.
 //$mail->MsgHTML(file_get_contents('arquivo.html'));

 $mail->Send();
 echo "Mensagem enviada com sucesso</p>\n";

//caso apresente algum erro é apresentado abaixo com essa exceção.
}catch (phpmailerException $e) {
  echo $e->errorMessage(); //Mensagem de erro costumizada do PHPMailer
}

Remembering that you will need valid email users on the server to use it

  • Thank you very much for your help, I will try to use this method!!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.