Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

E-mail Wordpress

Boa tarde!

Esta dando erro ao enviar email na pagina de contato. Ajustei o e-mail do plugin e o mesmo no functions.php porém o erro persiste.

Alguma ideia do motivo de estar dando erro?

7 respostas

Oi André, aparece alguma mensagem de erro?

Aparece a mensagem que foi determinada no page.php

<?php } else { ?>
        <span class="email-fracasso">Desculpe, ocorreu um erro, seu e-mail não foi enviado!</span>
    <?php }
}
?>

E o que tem em cima desse else em seu código?

<?php
$css_escolhido = 'page';
require_once('header.php');

$nome = $_POST['form-nome'];
$email = $_POST['form-email'];
$mensagem = $_POST['form-mensagem'];

$formularioEnviado = isset($nome) && isset($email) && isset($mensagem);

if($formularioEnviado) {
    $enviou = enviar_e_checar_email($nome, $email, $mensagem);

    if($enviou) { ?>
        <span class="email-sucesso">Seu e-mail foi enviado com sucesso!</span>
    <?php } else { ?>
        <span class="email-fracasso">Desculpe, ocorreu um erro, seu e-mail não foi enviado!</span>
    <?php }
}
?>

Creio que é melhor ativar o debug no Wordpress para facilitar na identificação de erros.

O link abaixo tem algumas dicas de como identificar problemas no envio de e-mail

https://www.codeforest.net/debugging-wp-mail-like-a-boss-debugger

Ativei o debugger e deu as seguintes mensagens na pagina de contato:

Notice: Undefined index: form-nome in /Users/andrebisewski/Pixelwolf/wordpress/wp-content/themes/malura/page.php on line 5

Notice: Undefined index: form-email in /Users/andrebisewski/Pixelwolf/wordpress/wp-content/themes/malura/page.php on line 6

Notice: Undefined index: form-mensagem in /Users/andrebisewski/Pixelwolf/wordpress/wp-content/themes/malura/page.php on line 7

Ele se refere ao seguinte código:

$nome = $_POST['form-nome'];
$email = $_POST['form-email'];
$mensagem = $_POST['form-mensagem'];

Porém essas informações estão definidas conforme abaixo:

<form method="post">
            <div class="form-nome">
                <label for="form-nome">Nome:</label>
                <input id="form-nome" type="text" placeholder="Seu nome aqui" name="form-nome">
            </div>

            <div class="form-email">
                <label for="form-email">Email:</label>
                <input id="form-email" type="email" placeholder="email@exemplo.com.br" name="form-email">
            </div>

            <div class="form-mensagem">
                <label for="form-mensagem">Mensagem:</label>
                <textarea id="form-mensagem" name="form-mensagem"></textarea>
            </div>
            <button type="submit">Enviar</button>

        </form>
solução!

Essa mensagem de erro ocorre porque você está tentando ler o POST na hora em que abre a página, o conteúdo somente existe depois de enviar o formulário.

A mensagem de erro pode sumir desta forma:

$nome ="";
$email ="";
$mensagem = "";
if (isset($_POST['form-nome'])){
    $nome = $_POST['form-nome'];
}
if (isset($_POST['form-email'])){
    $email = $_POST['form-email'];
}
if (isset($_POST['form-mensagem'])){
    $mensagem = $_POST['form-mensagem'];
}

Agora que o debug está ativo, tente preencher e enviar o formulário para ver qual o erro que está ocorrendo.