На самом деле - один из самых простых способов победить спам-ботов - это иметь скрытое поле в каждой контактной форме; и обычно спам-боты заполняют его, тогда как люди, поскольку они не могут этого видеть, не смогут.
Попробуйте добавить к вашему виду:
//call it something along the lines of 'name' or 'email', and the
//real form field 'x1' or 'x2' etc
$this-Form->input('aformfield', array('class' => 'aformfield');
Убедитесь, что вы прячете это в своем CSS:
.aformfield{display:none;}
В контроллере перед отправкой электронного письма проверьте, заполнено ли скрытое поле:
if(!empty($this->data['Model']['aformfield'])){
$this->Session->setFlash('You shouldn\'t be able to fill out a hidden field');
$this->redirect($this->referrer());
}
Это не пуленепробиваемый, и я уверен, что спам-боты будут найдут способ обойти это, но это хорошее место для начала, если вы не хотите делать капчи.