2011-12-01 9 views
5

In Cake 1.3, EmailComponent ha fatto ciò che dovrebbe fare. La nuova classe Cake Email in 2.0 si è rivelata una frustrazione .... Nessuna email inviata, nessun errore .... documentazione vaga ...CakePHP 2.0: frustrazione di CakeEmail

Ho provato tutte le possibili varianti, l'ho provato con il mio SMTP, Mail() e Gmail, non succede nulla. Con la presente il mio ultimo tentativo:

controller frammento:

//on top of page 
App::uses('CakeEmail', 'Network/Email'); 


//in method 
$email = new CakeEmail(); 
$email->template('contact_email') 
->emailFormat('text') 
->to('[email protected]') 
->from('[email protected]') 
->send(); 

Email.php Config del file:

class EmailConfig {

//It also does not work with a constructor 

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

qualcuno può inviare codice di lavoro per la classe E-mail. Molte grazie

+0

"Non succede nulla" non è una descrizione di errore reale. Il debug è impostato su 2? – burzum

+0

Debug è impostato su 2. Una volta inviato il modulo, ricevo un messaggio di successo ..... un'e-mail non viene mai inviata. – ChrisDK

+2

-1. Si prega di essere un po 'più professionale con domande future; le critiche non costruttive, CAPS, e darmi codice funzionante non fanno domande buone. –

risposta

9

Credo che bisogna caricare il config da Config/email.php esplicitamente, non viene caricato automaticamente, non anche la configurazione di default:

$email = new CakeEmail(); 
$email->config('default'); 

//or in constructor:: 
$email = new CakeEmail('default'); 
+1

FINALMENTE, grazie per il feedback, ha funzionato! Happy newyear – ChrisDK

+0

Non più da CakePHP 2.7 dove la configurazione 'predefinita' viene caricata automaticamente. –

1

Questo è il mio file di configurazione email. Non ho fatto alcun cambiamento qui

class EmailConfig { 

    public $default = array(
     'transport' => 'Mail', 
     'from' => 'Admin <[email protected]>',  
     'charset' => 'utf-8', 
     'headerCharset' => 'utf-8', 
    ); 

} 

Questo è come i inviare la posta

$email = new CakeEmail(); 

$result = $email->template('welcome') 
       ->emailFormat('text') 
       ->to($NewUser['email']) 
       ->from('[email protected]') 
       ->send(); 
var_dump($result); 
+0

Grazie Web Developer. Ho fatto tutto ciò che hai detto, vedo un dump e ho aggiunto i parametri corretti per il mio server di posta (che funziona con il vecchio componente di posta), ancora non viene inviato nulla. Sei in grado di email con questo script? Non ricevo messaggi di errore. – ChrisDK

+0

sì, sono in grado di inviarlo – aWebDeveloper

+0

stai inviando su localhost – aWebDeveloper

3

A mio parere si dovrebbe usare questo:

$email = new CakeEmail('gmail');