2012-02-23 3 views
0

Я использую 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() не работает.

Какие еще методы отладки можно проверить, чтобы убедиться, что это не мой сервер, предотвращающий отправку электронной почты?

+0

Работает ли ваш MTA? Если нет, вы увидите именно это поведение (и все отправленные письма при его запуске). –

+0

посмотрите в журнале ошибок apache (но если он есть там, вы должны были его увидеть) и в журнале ошибок почты – Mike

+1

Проверьте свои apache, а также добавьте поверх своего PHP-файла 'ini_set ('display_errors', 'On'); error_reporting (E_ALL); 'чтобы вы также получали уведомления и предупреждения. –

ответ

1

Письмо PHP() не будет выдавать никаких исключений. Вам нужно проверить статус возврата. Если это неверно, ваш MTA не принимает почту. Даже если он возвращает true, that doesn't actually mean much of anything.

Взгляните на почтовые журналы в/var/log /. Надеюсь, это поможет вам разобраться в этом.

0

также проверьте настройки брандмауэра. иногда он останавливает все исходящие запросы smtp, если не из определенных источников.

0

Сервер, на котором выполняется ваше приложение Cake, вероятно, требует (SMTP) аутентификации, прежде чем он сможет отправить что-либо, что является довольно распространенной конфигурацией.

Скопируйте файл app/Config/email.php.default на номер app/Config/email.php и настройте его в соответствии с вашими настройками (обычно это только локальный хост, и вы можете использовать один из ваших почтовых ящиков для аутентификации).

Также см. the book по этой теме.

+0

Странно, этот же сервер отправляет почту из другой папки (это VPS, на котором размещаются несколько сайтов). Я просто проверял, могут ли другие веб-сайты отправлять почту, и ничего. Так странно. Это похоже на то, что он отключен или что-то в этом роде. Я думаю, что эта проблема связана с тем, что MTA не настраивается (хотя я и думал, что это так). –

Смежные вопросы