2016-03-28 16 views
1

私はユーザーが登録を完了したときにリンク付きのメールを送信するためにtriyngです。 リンクには、ユーザーのIDに変数$ idを付ける必要があります。 私は別のものを試してみましたが、私のリンクは常に
HTTPとして表示されます:?//localhost/users-data/activate/.php ID =>Zend_Mailを使用して変数でリンクを送信する

私はZend_Mailのを使用しています。 私がしようとしているのは、例えば:ユーザID = 1にリンクhttp://localhost/users-data/activate1を送ります。そのためには、IDに対応するURLの最後の番号を取得し、アクティブ化スクリプトでこのユーザーにステータスを設定することができます。

私が間違っていることを教えてください。

これは私の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; 
} 

ですこれはあなたが$requestから$_requestに行く私の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

です。後者はどこにも定義されていないため、値はnullです。

+0

を試してみてください、あなたanswearいただきありがとうございます。 しかし、少なくとも$ emailと$ nameが設定されているように見えます。とにかく$ _requestをどのように定義できますか? – BrunaSM

-1

作成したHTMLリンクが正しくありません:HTMLで

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

、有効なリンクは(href属性に注意してください)です。

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

だからあなたのスクリプトのようなリンクを構築する必要がありますこれは:

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

A私はhttp://localhost/users-data/activate/.phpがあなたが望んでいないと思います:あなたのスクリプトはおそらくphp拡張の前に名前を持っています。

+0

あなたの答えをありがとう!それでも私の電子メール は次のように表示されます。 アカウントを有効にするには、以下のリンクをクリックしてください 私が本当にしたいことは例えばリンクは、ユーザID = 1 にリンクhttp送るだけのことです:// localhostと/ユーザーデータ/有効化1。 その場合は、idに対応するURLの最後の番号を取得し、アクティブ化スクリプトでこのユーザーにステータスを設定することができます。 – 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

関連する問題