私はユーザーが登録を完了したときにリンク付きのメールを送信するために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);
}
}
を試してみてください、あなたanswearいただきありがとうございます。 しかし、少なくとも$ emailと$ nameが設定されているように見えます。とにかく$ _requestをどのように定義できますか? – BrunaSM