1

Я хочу отправить электронное письмо со ссылкой, когда пользователь завершит регистрацию. Ссылка должна иметь переменную $ id с идентификатором пользователя. Я пробовал разные вещи, но моя связь всегда появляются как
HTTP: //localhost/users-data/activate/.php идентификатор =>Отправить ссылку с переменной с помощью Zend_Mail

Я использую Zend_Mail. То, что я пытаюсь сделать, это, например: отправить пользователю id = 1 ссылку http://localhost/users-data/activate1. Для этого я могу взять последнее число url, которое должно соответствовать id, и установить статус этого пользователя в моем скрипте активации.

Не могли бы вы показать мне, что я делаю неправильно?

Это мой registerAction

public function registerAction() 
{ 
    // action body 
    $request = $this->getRequest(); 
    $form = new Application_Form_UsersData(); 

    if ($this->getRequest()->isPost()) { 
     if ($form->isValid($request->getPost())) { 
      $comment = new Application_Model_UsersData($form->getValues()); 
      $mapper = new Application_Model_UsersDataMapper(); 
      $mapper->save($comment); 

      // send email 
      $id = $comment -> getId(); 
      $formValues = $this->_request->getParams(); 
      $mail = new Application_Model_Mail(); 
      $mail->sendActivationEmail($formValues['email'], $id,$formValues['name']); 
      $this->_redirect('/users-data/regsuccess'); 

     } 
    } 

    $this->view->form = $form; 
} 

Это мой Application_Model_Mail

class Application_Model_Mail 
{ 

    public function sendActivationEmail($email, $id,$name) 
    { 
     require_once('Zend/Mail/Transport/Smtp.php'); 
     require_once 'Zend/Mail.php'; 


     $config = array('auth' => 'login', 
       'username' => '*******@gmail.com', 
       'password' => '******', 
       'port'  => '587', 
       'ssl' => 'tls'); 
     $tr = new Zend_Mail_Transport_Smtp('smtp.gmail.com',$config); 
     Zend_Mail::setDefaultTransport($tr); 

     $mail = new Zend_Mail(); 

     $mail->setBodyText('Please click the following link to activate your account ' 
        . '<a http://localhost/users-data/activate/.php?id='.$id.'>'.$id.'</a>') 
       ->setFrom('[email protected]', 'Website Name Admin') 
       ->addTo($email, $name) 
       ->setSubject('Registration Success at Website Name') 
       ->send($tr); 

    } 

} 

ответ

0

Вы идете от $request к $_request. Последнее не определено нигде, поэтому его значения равны нулю.

+0

Благодарим Вас за answear. Но похоже, что по умолчанию заданы хотя бы $ e-mail и $ name, как только они появятся в письме правильно. Во всяком случае, как я могу определить $ _request? – BrunaSM

-1

Ссылка HTML вы создаете неправильна:

'<a http://localhost/users-data/activate/.php?id='.$id.'>' 

В HTML, действительная ссылка (обратите внимание на атрибут href):

<a href="http://...">...</a> 

Так что ваш сценарий должен построить ссылку как это:

'<a href="http://localhost/users-data/activate/.php?id='.$id.'">' 

A lso, я полагаю, http://localhost/users-data/activate/.php не то, что вы хотите: у вашего сценария есть имя до расширения php.

+0

Спасибо за ваш ответ! Даже моя электронная почта выглядеть следующим образом: Пожалуйста, нажмите на следующую ссылку, чтобы активировать ваш аккаунт То, что я действительно хочу это только то, что ссылка, например, отправить идентификатор пользователя = 1 ссылку HTTP: // локальный/пользователей-данные/activate1. Для этого я могу взять последнее число url, которое должно соответствовать id, и установить статус этого пользователя в моем скрипте активации. – BrunaSM

0

Попробуйте

$mail->setBodyHtml("Please click the following link to activate your". 
"account<a href='http://localhost/users-data/activate.php?id=$id'>$id</a>") 
+0

Благодарим вас за ответ. Таким образом, ссылка просто не отображается в письме ... – BrunaSM