Dúvida para envio de e-mail usando o CakeEmail

120 views
Skip to first unread message

João Paulo de Vasconcelos Resende

unread,
Jul 27, 2014, 2:54:15 PM7/27/14
to cakep...@googlegroups.com
Boa tarde a todos, 
Estou implementando um formulário de contatos no meu projeto de testes. Utilizei os seguintes campos no formulário: Nome, Telefone, E-mail, Assunto, Mensagem.
Estou usando a view e layout padrão do cakeEmail e neste caso só envia o e-mail com o conteudo do input de mensagem. Qual é a forma correta de enviar os campos Nome, telefone, etc. no corpo do e-mail?

Tentei assim:

<?php echo $telefone; ?>
<?php echo $content; ?>

Colocando nos arquivos de view/Emails/html/default.ctp e view/Emails/text/default.ctp porém não deu. 

Obrigado a todos.

Pedro Soares

unread,
Jul 27, 2014, 3:17:07 PM7/27/14
to cakep...@googlegroups.com
Bom, no caso, parece que você colocou na view a variavel telefone e content.
Você tem que setar ela no controller

Ex:
public function enviaemails(){
$this->set('telefone','21122121');
$this->set('contents','conteudo')
}
Ou então, pode usar o layout e enviar apartir do controller com os dados do formulario, usando o $this->request->data.

Seja mais especifico no que você quer e como fez, não entendi direito seu problema

João Paulo de Vasconcelos Resende

unread,
Jul 27, 2014, 9:27:34 PM7/27/14
to cakep...@googlegroups.com
Então Pedro, no controller eu coloquei assim:

$this->set('telefone', $this->request->data['Contato']['phone']);

Porém não deu. 

Leandro Machado Pereira

unread,
Jul 28, 2014, 8:19:54 AM7/28/14
to cakep...@googlegroups.com
João uso eu o envio de email sem o uso da view.
Veja o exemplo:

$message = "Minha mensagem bla bla bla bla bla bla bla ";

$Email = new CakeEmail('smtp');
$Email->emailFormat('html');
$Email->from(array('em...@email.com.br' => 'Nome do remetente'));
$Email->to('ema...@emailto.com.br');
$Email->subject('Assunto do email');
if($Email->send($message)) {
$this->Session->setFlash('Obrigado! O seu e-mail foi enviado com sucesso.', 'sucesso');
$this->redirect(array('controller' => 'pages', 'action' => 'display', 'home'));
}


--
--
CakePHP Tuga (cakephp-pt)
 
Utilize http://bin.cakephp.org para códigos
Cookbook: http://book.cakephp.org
 
Website do CakePHP: http://cakephp.org/
Website do grupo: http://groups.google.com/group/cakephp-pt?hl=pt-PT
---
Recebeu esta mensagem porque subscreveu ao grupo "CakePHP Tuga" do Grupos do Google.
Para anular a subscrição deste grupo e parar de receber emails do mesmo, envie um email para cakephp-pt+...@googlegroups.com.
Para publicar uma mensagem neste grupo, envie um email para cakep...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/cakephp-pt.
Para mais opções, visite https://groups.google.com/d/optout.



--



***Se você pretende redirecionar este e-mail, por favor, apague todos os endereços que aparecem nele. Outra dica de segurança é endereçá-lo no Cco. Desta forma você estará protegendo a mim, seus amigos e a você mesmo. Eu e a Campanha Contra o SPAM agradecemos.Não envie correntes.***

João Paulo de Vasconcelos Resende

unread,
Jul 28, 2014, 3:03:38 PM7/28/14
to cakep...@googlegroups.com
Então Leandro, eu entendi a forma como vc usa, mas não entendi como usaria no meu caso, pois tenho um formulário onde ficará disponível para preenchimento de qualquer um que visitar o site.
Minha grande dúvida é como vou colocar outros campos (por exemplo Nome, Telefone, E-mail) dentro dessa $message ou alguma outra forma de enviar os campos para o e-mail.

Att.
João Paulo


Em domingo, 27 de julho de 2014 15h54min15s UTC-3, João Paulo de Vasconcelos Resende escreveu:

Leandro Machado Pereira

unread,
Jul 28, 2014, 4:18:41 PM7/28/14
to cakep...@googlegroups.com
João, o formulário você cria normalmente, e quando ele fizer um post você executa a função de envio do email.


--
--
CakePHP Tuga (cakephp-pt)
 
Utilize http://bin.cakephp.org para códigos
Cookbook: http://book.cakephp.org
 
Website do CakePHP: http://cakephp.org/
Website do grupo: http://groups.google.com/group/cakephp-pt?hl=pt-PT
---
Recebeu esta mensagem porque subscreveu ao grupo "CakePHP Tuga" do Grupos do Google.
Para anular a subscrição deste grupo e parar de receber emails do mesmo, envie um email para cakephp-pt+...@googlegroups.com.
Para publicar uma mensagem neste grupo, envie um email para cakep...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/cakephp-pt.
Para mais opções, visite https://groups.google.com/d/optout.

João Paulo de Vasconcelos Resende

unread,
Jul 29, 2014, 10:28:50 PM7/29/14
to cakep...@googlegroups.com
Leandro, desculpa a demora no retorno.
Mas imaginemos que eu queira pegar o valor do campo "phone" que o cara preencheu no formulário e mandar este valor junto com o campo "message" q o cara tbm preencheu?

Eu imaginei assim:
function cadastro(){

 $Email
= new CakeEmail('smtp');

 $Email
-> template('email', 'email');
 $Email
->to('jpvasc...@outlook.com');
 $Email
->subject('Contato do Site');
 $msgfull
= $this->data['Contato']['message']."\n Telefone: ".$this->data['Contato']['phone'];
 $Email
->send($msgfull);
}



Até que enviou a mensagem, porém está chegando no corpo da mensagem um monte de erro junto, conforme abaixo veja:

Observe na penúltima linha: [main] - APP\webroot\index.php, line 109</pre></div></pre>testando email da pagina de contatos
Telefone: 3799055303

O texto da mensagem saiu concatenado com o telefone, portanto está funcionando, só preciso saber o pq desses erros que não consegui entender.


<pre class="cake-error"><a href="javascript:void(0);" onclick="document.getElementById('cakeErr53d857fddd391-trace').style.display = (document.getElementById('cakeErr53d857fddd391-trace').style.display == 'none' ? '' : 'none');"><b>Notice</b> (8)</a>: Undefined variable: telefone [<b>APP\View\Emails\text\email.ctp</b>, line <b>19</b>]<div id="cakeErr53d857fddd391-trace" class="cake-stack-trace" style="display: none;"><a href="javascript:void(0);" onclick="document.getElementById('cakeErr53d857fddd391-code').style.display = (document.getElementById('cakeErr53d857fddd391-code').style.display == 'none' ? '' : 'none')">Code</a> <a href="javascript:void(0);" onclick="document.getElementById('cakeErr53d857fddd391-context').style.display = (document.getElementById('cakeErr53d857fddd391-context').style.display == 'none' ? '' : 'none')">Context</a><pre id="cakeErr53d857fddd391-code" class="cake-code-dump" style="display: none;"><code><span style="color: #000000"><span style="color:
#0000BB">&nbsp;</span><span style="color: #007700">*/
</span></span></code>
<code><span style="color: #000000"><span style="color: #0000BB">?&gt;
</span></span></code>
<span class="code-highlight"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$telefone</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">?&gt;
</span></span></code></span></pre><pre id="cakeErr53d857fddd391-context" class="cake-context" style="display: none;">$viewFile = &#039;C:\xampp\htdocs\first-project\app\View\Emails\text\email.ctp&#039;
$dataForView = array(
&#039;content&#039; =&gt; &#039;testando email da pagina de contatos
Telefone: 3799055303
&#039;
)
$content = &#039;testando email da pagina de contatos
Telefone: 3799055303
&#039;
</pre><pre class="stack-trace">include - APP\View\Emails\text\email.ctp, line 19
View::_evaluate() - CORE\Cake\View\View.php, line 948
View::_render() - CORE\Cake\View\View.php, line 910
View::render() - CORE\Cake\View\View.php, line 471
CakeEmail::_renderTemplates() - CORE\Cake\Network\Email\CakeEmail.php, line 1683
CakeEmail::_render() - CORE\Cake\Network\Email\CakeEmail.php, line 1536
CakeEmail::send() - CORE\Cake\Network\Email\CakeEmail.php, line 1147
ContatosController::cadastro() - APP\Controller\ContatosController.php, line 13
ReflectionMethod::invokeArgs() - [internal], line ??
Controller::invokeAction() - CORE\Cake\Controller\Controller.php, line 490
Dispatcher::_invoke() - CORE\Cake\Routing\Dispatcher.php, line 191
Dispatcher::dispatch() - CORE\Cake\Routing\Dispatcher.php, line 165
[main] - APP\webroot\index.php, line 109
</pre></div></pre>testando email da pagina de contatos
Telefone: 3799055303

This email was sent using the CakePHP Framework,
http://cakephp.org.



Em domingo, 27 de julho de 2014 15h54min15s UTC-3, João Paulo de Vasconcelos Resende escreveu:

Leandro Machado Pereira

unread,
Jul 30, 2014, 7:42:34 AM7/30/14
to cakep...@googlegroups.com
Joao, veja se você colocou o redirect no método.
Assim você não renderiza a view novamente.

Veja se resolve.
--
--
CakePHP Tuga (cakephp-pt)
 
Utilize http://bin.cakephp.org para códigos
Cookbook: http://book.cakephp.org
 
Website do CakePHP: http://cakephp.org/
Website do grupo: http://groups.google.com/group/cakephp-pt?hl=pt-PT
---
Recebeu esta mensagem porque subscreveu ao grupo "CakePHP Tuga" do Grupos do Google.
Para anular a subscrição deste grupo e parar de receber emails do mesmo, envie um email para cakephp-pt+...@googlegroups.com.
Para publicar uma mensagem neste grupo, envie um email para cakep...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/cakephp-pt.
Para mais opções, visite https://groups.google.com/d/optout.

Pedro Soares

unread,
Jul 30, 2014, 8:09:27 AM7/30/14
to cakep...@googlegroups.com
Joao, tem como você setar qual layout vai usar utilizando o cakeEmail, ex: $Email->template
('welcome', 'fancy')
Agora, você está tentando enviar emails pelo localhost? Se for, as vezes ele não ta configurado para enviar emails, e ai da o erro.

João Paulo de Vasconcelos Resende

unread,
Jul 30, 2014, 7:23:11 PM7/30/14
to cakep...@googlegroups.com
Leandro, o redirect seria para onde?! Desculpe a pergunta, mas é pq no create do form, já tem a página para onde será redirecionada, conforme abaixo:

<?php echo $this->Form->create('Contato', array('action' => 'cadastro')); ?>

Ai sempre que o cara confirma o formulário para envio, ele é redirecionado para a view cadastro.

Pedro, não entendi a questão do layout, eu já criei um layout aqui chamado "email" e estou enviando via localhost sim, porém aparentemente está configurado corretamente, pois o email é enviado, apenas o "corpo" do e-mail que é enviado com esses erros citados.

Obrigado a todos.


Em domingo, 27 de julho de 2014 15h54min15s UTC-3, João Paulo de Vasconcelos Resende escreveu:

João Paulo de Vasconcelos Resende

unread,
Jul 30, 2014, 7:27:07 PM7/30/14
to cakep...@googlegroups.com
Amigos Pedro e Leandro,
Comentei a linha do layout e view (ou seja, acredito q agora está usando um layout em branco ou padrão) e em seguida fiz um redirect dentro do método e agora foi enviado corretamente.
O método ficou assim:
function cadastro(){
 $Email
= new CakeEmail('smtp');

 
//$Email -> template('email', 'email');

 $Email
->to('jpvasc...@outlook.com');
 $Email
->subject('Contato do Site');

 $msgfull
= (string) ($this->data['Contato']['message']."\n Telefone: ".$this->data['Contato']['phone']);
 
if($Email->send($msgfull)){
 $this
->redirect(array('controller' => 'contatos', 'action' => 'thanks'));
 
}
}

Obrigado a todos pelas dicas!!!

Em domingo, 27 de julho de 2014 15h54min15s UTC-3, João Paulo de Vasconcelos Resende escreveu:

Leandro Machado Pereira

unread,
Jul 30, 2014, 9:46:30 PM7/30/14
to cakep...@googlegroups.com
Joao, agora que funciona, se você quiser mecher na perfumaria do seu envio de email, verifique esses links



--
--
CakePHP Tuga (cakephp-pt)
 
Utilize http://bin.cakephp.org para códigos
Cookbook: http://book.cakephp.org
 
Website do CakePHP: http://cakephp.org/
Website do grupo: http://groups.google.com/group/cakephp-pt?hl=pt-PT
---
Recebeu esta mensagem porque subscreveu ao grupo "CakePHP Tuga" do Grupos do Google.
Para anular a subscrição deste grupo e parar de receber emails do mesmo, envie um email para cakephp-pt+...@googlegroups.com.
Para publicar uma mensagem neste grupo, envie um email para cakep...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/cakephp-pt.
Para mais opções, visite https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages