4
respostas

Não consigo fazer o formulário de contato funcionar

Olá, publiquei o site da empresa em que trabalho depois de edita-lo sobre um template que compramos. O site funcionou perfeitamente, exceto o formulário de contato, que não consigo fazer funcionar de jeito nenhum. Já procurei em todos os arquivos que pareçam ser relacionados e no próprio index.html e não encontrei. O site já está hospedado: www.mbmarcondicionado.com.br e se precisar posso colocar aqui todos os códigos/arquivos que forem necessários.

Muito obrigado pela ajuda!

4 respostas

Olá Thiago, veja a tag do formulário:

<form id="contactForm" action="php/contact-form.php" method="POST">

está apontando para o arquivo contact-form.php Este arquivo existe no projeto?

Lá deve ter o código para fazer o envio do email através do servidor web... Verifique se as conexões estão corretas.

Sim, esse arquivo está lá, e do pouco que sei, me parece tudo correto, mas ainda não sei muito hehe

<?php
/*
Name:             Contact Form
Written by:     Okler Themes - (http://www.okler.net)
Theme Version:    5.6.0
*/

session_cache_limiter('nocache');
header('Expires: ' . gmdate('r', 0));

header('Content-type: application/json');

require_once('php-mailer/PHPMailerAutoload.php');

// Step 1 - Enter your email address below.
$email = 'contato@mbmarcondicionado.com.br';

// If the e-mail is not working, change the debug option to 2 | $debug = 2;
$debug = 0;

$subject = $_POST['subject'];

$fields = array(
    0 => array(
        'text' => 'Name',
        'val' => $_POST['name']
    ),
    1 => array(
        'text' => 'Email address',
        'val' => $_POST['email']
    ),
    2 => array(
        'text' => 'Message',
        'val' => $_POST['message']
    )
);

$message = '';

foreach($fields as $field) {
    $message .= $field['text'].": " . htmlspecialchars($field['val'], ENT_QUOTES) . "<br>\n";
}

$mail = new PHPMailer(true);

try {

    $mail->SMTPDebug = $debug;                                 // Debug Mode

    // Step 2 (Optional) - If you don't receive the email, try to configure the parameters below:

    //$mail->IsSMTP();                                         // Set mailer to use SMTP
    //$mail->Host = 'mail.yourserver.com';                       // Specify main and backup server
    //$mail->SMTPAuth = true;                                  // Enable SMTP authentication
    //$mail->Username = 'user@example.com';                    // SMTP username
    //$mail->Password = 'secret';                              // SMTP password
    //$mail->SMTPSecure = 'tls';                               // Enable encryption, 'ssl' also accepted
    //$mail->Port = 587;                                          // TCP port to connect to

    $mail->AddAddress($email);                                    // Add another recipient

    //$mail->AddAddress('person2@domain.com', 'Person 2');     // Add a secondary recipient
    //$mail->AddCC('person3@domain.com', 'Person 3');          // Add a "Cc" address. 
    //$mail->AddBCC('person4@domain.com', 'Person 4');         // Add a "Bcc" address. 

    $mail->SetFrom($email, $_POST['name']);
    $mail->AddReplyTo($_POST['email'], $_POST['name']);

    $mail->IsHTML(true);                                  // Set email format to HTML

    $mail->CharSet = 'UTF-8';

    $mail->Subject = $subject;
    $mail->Body    = $message;

    $mail->Send();
    $arrResult = array ('response'=>'success');

} catch (phpmailerException $e) {
    $arrResult = array ('response'=>'error','errorMessage'=>$e->errorMessage());
} catch (Exception $e) {
    $arrResult = array ('response'=>'error','errorMessage'=>$e->getMessage());
}

if ($debug == 0) {
    echo json_encode($arrResult);
}

Me parece que é um problema de configuração do código vs servidor smtp.

Mude o código abaixo conforme está descrevendo aqui e veja as mensagens de debug do PHPMailer pra ter uma ideia do que está acontecendo.

// If the e-mail is not working, change the debug option to 2 | $debug = 2;
$debug = 2; //Mudar de 0 pra 2

Thiago, faça o que Tarcísio sugeriu, porém em um servidor de desenvolvimento. Veja se ele retorna algum erro e os detalhes.

Talvez tenha que fazer o Step2, sugerido no código como opcional...

// Step 2 (Optional) - If you don't receive the email, try to configure the parameters below: