2011-10-27 19 views
5

Estoy tratando de enviar correos electrónicos desde una cuenta de Gmail usando las configuraciones de CakEmail y SMTP.CakePHP-2.0: ¿Cómo puedo enviar correos electrónicos desde una cuenta de Gmail usando CakEmail y la configuración SMTP?

Sería bueno que alguien diga el proceso paso a paso qué hacer.

he añadido lo siguiente en app/config/email.php =>

<?php 
class EmailConfig { 
    public $smtp = array(
     'host' => 'ssl://smtp.gmail.com', 
     'port' => 465, 
     'username' => '[email protected]', 
     'password' => 'secret' 
    ); 
} 

Ahora, ¿cómo puedo enviar correo electrónico a cualquier cuenta de correo electrónico de "[email protected]"?

Es de CakePHP 2.0-

Respuesta

2

acaba de establecer la from:

<?php 
$email = new CakeEmail(); 
$email->from(array('[email protected]' => 'Your Name')); 
$email->to('[email protected]'); 
$email->subject('Sent from Gmail'); 
$email->send('My message'); // or use a template etc 

debe hacerlo.

Es posible que también desee configurar sender; No soy 100% pero me imagino que será útil cuando envíe correos electrónicos "desde" gmail a través de su propio sitio web; tal vez para detener el correo electrónico que se recoge como correo no deseado.

$email->sender('[email protected]', 'MyApp emailer');

+0

Funciona como un encanto –

0

Actualmente estoy usando una cuenta de Gmail para enviar correo saliente. Estoy usando plantillas y una función de configuración de correo electrónico reutilizable. Aquí hay una copia de mi código de trabajo:

// app/controllers/users_controller.php 
function sendemail($subject, $body, $to, $template) { 
    $this->Email->smtpOptions = array(
     'port'=>'465', 
     'timeout'=>'30', 
     'host' => 'ssl://smtp.gmail.com', 
     'username'=>'[email protected]', 
     'password'=>'secret', 
    ); 
    $this->Email->delivery = 'smtp'; 
    //$this->Email->delivery = 'debug'; 
    $this->Email->from = 'Username <[email protected]>'; 
    $this->Email->to  = $to; 
    $this->Email->subject = $subject; 
    $this->set('body', $body); 
    $this->set('smtp_errors', $this->Email->smtpError); 
    $this->Email->send($content, $template); 
} 

// app/controllers/users_controller.php 
// Excerpt from new user method in users controller: 
function add() { 
    // ...other stuff 
    $body['user'] = $user['User']['username']; 
    $this->sendemail('Domain.com New User Signup!', $body, '[email protected]', 'newuser'); 
    // ...other stuff 
} 

// app/views/elements/email/text/newuser.ctp 
Everyone, 
Another new user just signed up for Domain. Stats below: 
User: <?php echo $body['user'] . "\r\r"; ?> 
Just thought you'd like to know :) 
-Janet 
+0

Este es un componente de correo electrónico más antiguo. – shibly

0

Utilice el componente Swiftmailer; este es el componente más fácil de usar.

http://bakery.cakephp.org/articles/mhuggins/2008/06/11/improved-swiftmailer-component

hay algunos cambios que hay que hacer durante el uso de este con CakePHP 2.0 en adelante. CakePHP 2.0 proporciona un directorio de vista de 'Correo electrónico', que se usa para almacenar todas las plantillas de correo electrónico.

Los cambios en el componente:

  1. cambiar todas las var declaraciones a public
  2. Cambio public $layout = 'Emails'; a public $viewPath = '/Emails';

  3. Cambie la ruta rendir en _getBodyText:

$body = $this->controller->render($this->viewPath . DS . 'text' . DS . $view, $this->layout . DS . 'text'.DS.'default');

  1. Cambie la ruta render en _getBodyHtml:

$body = $this->controller->render($this->viewPath . DS . 'html' . DS . $view, $this->layout . DS . 'html'.DS.'default');

  1. comentar las líneas:

$bodyText = $this->_getBodyText($view); $message->setBody($bodyText, "text/plain");

El componente Swiftmailer envía un correo electrónico en blanco si establece HTML & TEXTO activo. Se lee en las vistas de correo electrónico & agrega el cuerpo para el texto. Esa es la razón para comentar estas dos líneas si desea enviar correos electrónicos html.

La segunda razón es que si ambos están activados & tiene contenido en ambos email.html.ctp & email.text.ctp archivos, se crea un problema de cabecera en que sólo el formato de texto se muestra al utilizar mensajes de correo electrónico (en realidad, ambos formatos se encuentran presentes en la cabecera, pero suprime la parte html & muestra la parte de texto).

3

La configuración correcta es:

public $gmail = array(
    'host' => 'ssl://smtp.gmail.com', 
    'port' => 465, 
    'username' => '[email protected]', 
    'password' => 'secret', 
    'transport' => 'Smtp' 
); 

Por lo tanto, no se olvide el elementotransporte.

Cuestiones relacionadas