Я использую CakePHP для отправки электронной почты. Мой контроллер код выглядит следующим образом:PHP mail() не отправляет, но исключение не выбрано
if ($this->User->save($this->request->data)) {
$email = new CakeEmail();
$email->from(array('[email protected]' => 'My Domain'));
$email->to($this->request->data['User']['email']);
$email->subject('My Domain Confirmation');
$email->replyTo('[email protected]');
$email->sender('[email protected]', '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');
Если я print_r на $ email-> Send(), я получаю:
Array
(
[headers] => From: My Domain
Reply-To: [email protected]
X-Mailer: CakePHP Email
Date: Thu, 23 Feb 2012 00:40:00 -0800
Message-ID: <[email protected]>
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 и передаю ему правые переменные и не исключая никаких исключений. Поэтому я решил просто сделать тест основной почты() в одном из моих просматривать файлы т.д .:
$to = "[email protected]";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "[email protected]";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>
Что вторит «Почта посланный.», Но ничего на самом деле не пришел в мой почтовый ящик. Я проверил свой файл в /var/spool/mail/root
, и последнее отправленное электронное письмо было на том же сервере 9 января 2012 года. Так что это определенно работало раньше. Я недавно обновился до Cake 2.0, но это не объясняет, почему простой ol 'mail()
не работает.
Какие еще методы отладки можно проверить, чтобы убедиться, что это не мой сервер, предотвращающий отправку электронной почты?
Работает ли ваш MTA? Если нет, вы увидите именно это поведение (и все отправленные письма при его запуске). –
посмотрите в журнале ошибок apache (но если он есть там, вы должны были его увидеть) и в журнале ошибок почты – Mike
Проверьте свои apache, а также добавьте поверх своего PHP-файла 'ini_set ('display_errors', 'On'); error_reporting (E_ALL); 'чтобы вы также получали уведомления и предупреждения. –