2012-01-06 1 views
0

Я попытался отправить код активации пользователю почты (в настоящее время gmail) из localhost .. при отправке информации о пользователе, сохраненной в базе данных, но сообщение не отправлено..так почему не отправлено?Почему компонент электронной почты не отправил код активации в gmail?

var $components = array('Email','Auth','Recaptcha'); 
// Allows a user to sign up for a new account 
    function register() { 
     if (!empty($this->data)) { 
      // See my previous post if this is forgien to you 
    if($this->data['User']['password'] == $this->Auth->password($this->data['User']['password_confirm'])){ 
       $this->User->data = Sanitize::clean($this->data); 
      // Successfully created account - send activation email 
     if($this->Recaptcha->valid($this->params['form'])){ 
      if ($this->User->save()) { 
       $this->__sendActivationEmail($this->User->getLastInsertID()); 
       $this->Session->setFlash('activation code sent check your mail'); 
       $this->redirect('/users/register'); 
      }else { 
      $this->data['User']['password'] = null; 
      } 

     }else{ 
      $this->data['User']['password'] = null; 
      $this->Session->setFlash('wrong captcha please try again'); 
     } 
    }else{ 
     $this->data['User']['password'] = null; 
     $this->Session->setFlash('password not match'); 
    } 

    } 
    } 

функция Отправить электронное письмо с кодом активации на указанный user.id $ user_id @param Int $ user_id Пользователь отправить письмо с кодом активации для @return Boolean указывает на успех

function __sendActivationEmail($user_id) { 
     $user = $this->User->find(array('User.id' => $user_id), array('User.id','User.email', 'User.username'), null, false); 
     if ($user === false) { 
      debug(__METHOD__." failed to retrieve User data for user.id: {$user_id}"); 
      return false; 
     } 

     // Set data for the "view" of the Email 

     $this->set('activate_url', 'http://' . env('SERVER_NAME') . '/cakenews/users/activate/' . $user['User']['id'] . '/' . $this->User->getActivationHash()); 
    $this->set('username', $this->data['User']['username']); 

     $this->Email->to = $user['User']['email']; 
     $this->Email->subject = env('SERVER_NAME') . ' - Please confirm your email address'; 
     $this->Email->from = '[email protected]'; 
     $this->Email->template = 'user_confirm'; 
     $this->Email->delivery = 'smtp'; 
     $this->Email->smtpOptions = array(
'port'=>'465', 
'timeout'=>'30', 
'host' => 'ssl://smtp.gmail.com', 
'username'=>'[email protected]', 
'password'=>1234567, 

       ); 
     $this->Email->sendAs = 'text'; // you probably want to use both :) 
     return $this->Email->send(); 
    } 

ответ

2

Вы написали вы находитесь на локальном хосте, вы, вероятно, не можете отправлять электронные письма, но, вероятно, будете работать один раз в Интернете.

попытка отладки

function __sendActivationEmail($user_id) { 
    $this->Email->delivery = 'debug'; 
    .... 
} 

Затем в макете

<?php echo $this->Session->flash('email'); ?> 

И посмотреть, что выходит.

 Смежные вопросы

  • Нет связанных вопросов^_^