почему компонент электронной почты не отправил код активации в Gmail? - PullRequest
0 голосов
/ 06 января 2012

Я пытался отправить код активации на почту пользователя (в настоящее время 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 = 'spcialist@gmail.com';
        $this->Email->template = 'user_confirm';
         $this->Email->delivery = 'smtp';
       $this->Email->smtpOptions = array(
'port'=>'465',
'timeout'=>'30',
'host' => 'ssl://smtp.gmail.com',
'username'=>'spcialist@gmail.com',
'password'=>1234567,

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

1 Ответ

2 голосов
/ 07 января 2012

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

попробуйте отладку

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

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

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

И посмотри, что получится.

...