Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Francispansa

[Resolvido] Problema com Formulario de contato

Recommended Posts

Pessoal, estou desenvolvendo meu primeiro site usando o cake, mas to brigando com o formulário de contato aqui.

 

Quando eu preencho os dados e envio os dados aparecem em uma tela branca(o que deveria chegar no meu email) e no email chega o email vazio.

 

Segui o exemplo que está neste link aqui .: http://bakery.cakephp.org/articles/drayen/2006/10/11/sending-email-with-phpmailer

 

O meu arquivo component/email.php é igual ao do link citado acima, a unica linha que mudei foi esta,

 

vendor('phpmailer'.DS.'class.phpmailer');

 

deixe assim

 

App::import('Vendor', 'PHPMailer', array('file' => 'phpmailer/class.phpmailer.php'));

 

Abaixo seguem meus arquivos

 

contato_controller.php

 

if(isset($this->data))
{

$this->Email->template = 'email/confirm';
// You can use customised thmls or the default ones you setup at the start

$this->set('data', $this->data);
$this->Email->to = 'meuEmail@email.com.br';
$this->Email->subject = 'CAKEPHP';

$result = $this->Email->send();

//the rest of the controller method...
}

view/contato/index.ctp

<div id="contato">
<h2>CONTATO</h2>
<div class="clear"></div>
<small>Campos obrigatórios *</small>
<?php echo $form->create('data', array('url' => '/contato/')); ?>
<?php
echo $form->input('nome', array('size' => 50, 'label' => 'Nome<small>*</small>', 'class' => 'campos'));
echo $form->input('fone', array('size' => 50, 'label' => 'Telefone<small>*</small>', 'class' => 'campos'));
echo $form->input('email', array('size' => 50, 'label' => 'E-mail<small>*</small>', 'class' => 'campos'));
echo $form->input('site', array('size' => 50, 'label' => 'Website', 'class' => 'campos'));
echo $form->input('assunto', array('label' => 'Assunto<small>*</small>', 'type' => 'select', 'options' => array('Atendimento', 'Orçamento', 'Contato', 'Curriculum', 'Outros')));
echo $form->input('mensagem', array('cols' => 50, 'rows' => 10, 'label' => 'Mensagem<small>*</small>', 'type' => 'textarea', 'value' => ''));
?>
<?php echo $form->end(__('Submit', true)); ?>
</div>

view/contato/email/confirm_html.ctp e confirm_text.ctp

<?php

echo 'De: '. $data['data']['nome'].' - '.$data['data']['email'].'<br/>';
echo 'Telefone: '. $data['data']['fone'].'<br/>';
echo 'Assunto: '. $data['data']['assunto'].'<br/><br/>';
echo 'Site: '. $data['data']['site'].'<br/><br/>';
echo 'Mensagem:<br/> '. $data['data']['mensagem'];

?>

Estou procurando a solução para isso a dias e ate agora não obtive sucesso.

 

Desde já agradeço a atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pra que usar componente de terceiros, se o próprio cake possui um componente para esta finalidade?

 

http://book.cakephp.org/view/1283/Email

 

Eu sempre trabalhei com o PHPmailer, por isso optei por implementar algo com ele no site.

Mas vou dar uma olhada mais a fundo nesse link que você me passou.

 

Abrass

 

Pessoal, será que alguem sabe porque o email é enviado mas chega sem o conteudo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mostra o template que você está usando "email/confirm".

Ele existe? Está em branco?

 

Lucas eu tentei de duas formas, elas são as seguintes.:

 

<?php echo $content_for_layout; ?>

<?php

echo 'De: '. $data['data']['nome'].' - '.$data['data']['email'].'<br/>';
echo 'Telefone: '. $data['data']['fone'].'<br/>';
echo 'Assunto: '. $data['data']['assunto'].'<br/><br/>';
echo 'Site: '. $data['data']['site'].'<br/><br/>';
echo 'Mensagem:<br/> '. $data['data']['mensagem'];

?>

Sinceramente não sei o que estou fazendo de errado(ainda estou tentando ententer o cake :P ), mas porque o conteudo que deveria aparecer no email aparece acima do topo do site?alguma ideia de onde está meu erro..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Francispansa, eu estava tentando utilizar esse component ontem mesmo (coincidencia... =p) e ela está problematico... o ob_start() e ob_end_clean() não estão se comportando como deveriam, e o bufffer está sendo enviado normalmente (por isso aparece no topo o conteudo do e-mail)... Tentei resolver, mas está cabuloso...

Sugiro que tente utilizar o EmailComponent default mesmo, de um pesquisada no google, você deverá encontrar vários exemplos... =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa amigo! Esqueça oque eu disse, consegui resolver.

Substituia no codigo as funções por:

function bodyText() {
      $tmpOutput = $this->controller->output;
      $mail = $this->controller->render('/elements/email/text/' . $this->template, ''); 
      $this->controller->output = $tmpOutput;
      return $mail;
    }

    function bodyHTML() {
      $tmpOutput = $this->controller->output;
      $mail = $this->controller->render('/elements/email/html/' . $this->template, ''); 
      $this->controller->output = $tmpOutput;
      return $mail;
    }

 

Agora no seu exemplo:

$this->Email->template = 'email/confirm';
// You can use customised thmls or the default ones you setup at the start

$this->set('data', $this->data);
$this->Email->to = 'meuEmail@email.com.br';
$this->Email->subject = 'CAKEPHP';

$result = $this->Email->send();

//the rest of the controller method...
mude para:

$this->Email->template = 'confirm'; // apenas isso

E crie o layout em views/elements/email/text para formato texto e views/elements/email/html para HTML.

 

=)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lucas, salvou a patria.. hehe

 

Muito obrigado pela força.

O e-mail ta chegando certinho, so tenho q ver o que seria esse erro aqui.:

is_file() [function.is-file]: open_basedir restriction in effect. File(/elements/email/html/contato) is not within the allowed path(s): (/home/httpd/vhosts/francis-g.com.br/httpdocs:/tmp) [CORE/cake/libs/view/view.php, line 846]

 

Bom, mais uma vez muito obrigado pela ajuda, como estou iniciando no Cake seus posts tanto aqui no forum quanto no seu blog estão sendo de grade valia..

 

Abrass

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.