Sign Me UpプラグインをJotlabから使用していて、電子メールの送信に問題があります。私は著者に連絡しようとしましたが、今まで運がありませんでした。Sign Me UpプラグインでCakePHP電子メールコンポーネントエラーを解決する方法
私はこれをACLプラグインで使用しています。メールを送信する以外はすべてこれまでのところ動作しています。すべての研究とトラブルシューティングでは何の答えも得られていません。
これはcakephp 2.xのバージョンです。電子メールコンポーネントは非推奨ですが、動作するはずです。
登録フォームを送信すると、レコードは挿入されますが、電子メールは送信されず、このエラーメッセージが表示されます。ここで
#0 C:\wamp\www\blue2\lib\Cake\Network\Email\CakeEmail.php(967): MailTransport->send(Object(CakeEmail))
#1 C:\wamp\www\blue2\lib\Cake\Controller\Component\EmailComponent.php(345): CakeEmail->send(Array)
#2 C:\wamp\www\blue2\app\Plugin\sign_me_up\Controller\Component\SignMeUpComponent.php(143): EmailComponent->send(Array)
#3 C:\wamp\www\blue2\app\Plugin\sign_me_up\Controller\Component\SignMeUpComponent.php(103): SignMeUpComponent->__sendActivationEmail(Array)
#4 C:\wamp\www\blue2\app\Plugin\AclManagement\Controller\UsersController.php(57): SignMeUpComponent->register()
#5 [internal function]: UsersController->register()
#6 C:\wamp\www\blue2\lib\Cake\Controller\Controller.php(473): ReflectionMethod->invokeArgs(Object(UsersController), Array)
#7 C:\wamp\www\blue2\lib\Cake\Routing\Dispatcher.php(104): Controller->invokeAction(Object(CakeRequest))
#8 C:\wamp\www\blue2\lib\Cake\Routing\Dispatcher.php(86): Dispatcher->_invoke(Object(UsersController), Object(CakeRequest), Object(CakeResponse))
#9 C:\wamp\www\blue2\app\webroot\index.php(96): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#10 {main}
はレジスタ機能用のコントローラでのコードは次のとおりです。
public function register() {
$this->__isLoggedIn();
if (!empty($this->data)) {
extract($this->settings);
$model = $this->controller->modelClass;
$this->controller->loadModel($model);
$this->controller->{$model}->set($this->data);
if (CakePlugin::loaded('Mongodb')) {
$this->controller->{$model}->Behaviors->attach('Mongodb.SqlCompatible');
}
if ($this->controller->{$model}->validates()) {
if (!empty($activation_field)) {
$this->data[$model][$activation_field] = $this->controller->{$model}->generateActivationCode($this->data);
} elseif (!empty($useractive_field)) {
$this->data[$model][$useractive_field] = true;
}
if ($this->controller->{$model}->save($this->data, false)) {
//If an activation field is supplied send out an email
if (!empty($activation_field)) {
$this->__sendActivationEmail($this->data[$model]);
if (!$this->controller->request->is('ajax')) {
$this->controller->redirect(array('action' => 'activate'));
} else {
return true;
}
} else {
$this->__sendWelcomeEmail($this->data[$model]);
}
if (!$this->controller->request->is('ajax')) {
$this->controller->redirect($this->Auth->loginAction);
} else {
return true;
}
}
}
}
}
「アクティベーションメールを送信」と「ウェルカムメールを送信する」次のとおりです。
protected function __sendActivationEmail($userData) {
$this->__setUpEmailParams($userData);
$this->__parseEmailSubject('activation', $userData);
if ($this->__setTemplate(Configure::read('SignMeUp.activation_template'))) {
if ($this->Email->send($userData)) {
return true;
}
}
}
protected function __sendWelcomeEmail($userData) {
$this->__setUpEmailParams($userData);
$this->__parseEmailSubject('welcome', $userData);
if ($this->__setTemplate(Configure::read('SignMeUp.welcome_template'))) {
if ($this->Email->send($userData)) {
return true;
}
}
}
私はメールでケーキのドキュメントを読んだことがあり、複数回の再インストールを含む多くのことを試しました。
これらのエラーメッセージをどのように撃つかについてのヘルプは非常に高く評価されています。
ありがとう、ポール