Я использую CakePHP для отправки электронного письма. Код моего контроллера выглядит так:
if ($this->User->save($this->request->data)) {
$email = new CakeEmail();
$email->from(array('noreply@mydomain.com' => 'My Domain'));
$email->to($this->request->data['User']['email']);
$email->subject('My Domain Confirmation');
$email->replyTo('noreply@mydomain.com');
$email->sender('noreply@mydomain.com', 'My Domain');
$email->emailFormat('html');
$email->template('confirmation');
$email->send();
$email->viewVars(array(
'name' => $this->request->data['User']['username'],
'id' => $this->User->getLastInsertID(),
'code' => $this->request->data['User']['confirm_code']));
}
Я также включил в верхней части этого контроллера:
App::uses('CakeEmail', 'Network/Email');
Если я напечатаю_r на $ email-> send (), я получу:
Array
(
[headers] => From: My Domain
Reply-To: noreply@mydomain.com
X-Mailer: CakePHP Email
Date: Thu, 23 Feb 2012 00:40:00 -0800
Message-ID: <4f45fb60a0fc46cd926f305a32396397@mydomain.com>
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit
[message] =>
Hi there,
Welcome to my site! While you can now vote on submissions and leave comments, your own submissions will be screened and not appear to the public until you click on the confirmation link below:
Click here to confirm your account
We hope to see you around and thanks for joining the community!
Так что он, очевидно, использует мой шаблон электронной почты html и передает ему правильные переменные, и не выдает никаких исключений. Поэтому я решил просто выполнить базовый тест mail () в одном из моих файлов представления, например ::
$to = "mytestemail@example.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "someonelse@example.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>
Который повторил "Mail Sent.", Но на самом деле ничего не пришло на мой почтовый ящик. Я проверил свой файл в /var/spool/mail/root
, и последнее отправленное письмо было на том же сервере 9 января 2012 года. Так что оно определенно работало раньше. Я недавно обновился до Cake 2.0, но это не объясняет, почему не работает обычный ol 'mail()
.
Какие еще методы отладки я могу проверить, чтобы убедиться, что это не мой сервер, препятствующий отправке электронной почты?