Я недавно опубликовал вопрос о компоненте электронной почты CakePHP и с помощью некоторых ответов и комментариев смог решить мою проблему ...
Дело в том, что решение моей проблемы с электронной почтой выявило еще одну проблему!
Итак, вот моя проблема:
У меня есть контракт, с которым связан клиент. Когда я создаю контракт, я выбираю клиента. Я хочу отправить клиенту электронное письмо со ссылкой на договор при сохранении договора в базе данных. Однако, когда я сохраняю договор, письмо не отправляется! Я знаю, что электронная почта работает. Если я на самом деле жестко закодировал все переменные, все работает. Но когда я пытаюсь динамически получить информацию о клиенте из базы данных, она не работает.
Я видел решение, которое включало getByLastId (), но я не думаю, что это будет работать в этом случае, потому что мне не нужен последний добавленный пользователь ... Мне нужен пользователь, который подключен к этот контракт.
Надеюсь, я объясню это хорошо.
Вот код, который я считаю подходящим ... если вам нужна дополнительная информация, дайте мне знать, и я опубликую ее.
Вот код в моем contract_controller.php для моей функции отправки электронной почты:
function _sendContractEmail($id) {
$this->Email->smtpOptions = array(
'port'=>'587',
'timeout'=>'30',
'host'=>'smtp.email.com',
'username'=>'username',
'password'=>'password'
);
$User = $this->Contract->User->read(null,$id);
$this->Email->delivery = 'smtp';
$this->Email->to = $User['User']['email'];
$this->Email->subject = 'New Contract from Company';
$this->Email->replyTo = 'noreply@example.com';
$this->Email->from = 'noreply@example.com';
$this->Email->template = 'default';
$this->Email->sendAs = 'html';
$this->set('User', $User);
$this->Email->send('Test');
$this->set('smtp-errors', $this->Email->smtpError);
}
А вот код в моем contract_controller.php для функции add ():
function add() {
if (!empty($this->data)) {
$this->Contract->create();
if ($this->Contract->save($this->data)) {
$this->Session->setFlash(__('The Contract has been saved', true));
$this->_sendContractEmail($this->Contract->User->id);
} else {
$this->Session->setFlash(__('The Contract could not be saved. Please, try again.', true));
}
}
Любая помощь будет принята с благодарностью!
Спасибо
Иеремия