2010-01-04 1 views
0

у меня есть (я думаю) это простой скрипт для отправки короткого письма:PHP почты функция дает роковую ошибку, но письмо все-таки послал

<?php 

$to = "[email protected]"; 

$subject = "Amendment required"; 
$message = "Employee: " . $_POST['employees'] . "<BR /><BR />Notes: " . $_POST['notes'] . "<BR /><BR />Reported By: " . $_POST['empID'] . "."; 
$from = "[email protected]"; 
$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$headers .= "From: $from"; 
mail($to,$subject,$message,$headers); 

?> 

(я изменил адреса электронной почты, по причинам конфиденциальности)

Когда это будет загружен, после задержки мы получаем ошибку

«Фатальная ошибка: Максимальное время выполнения 30 секунд превышен ...» - но почта отправляется успешно.

Я пропустил что-то простое здесь?

Большое спасибо заранее

Leddy

+0

Это происходит независимо от адреса электронной почты, который вы установили в поле «Кому»? Я думаю о каких-то мерах защиты от нежелательной почты принимающей стороной. – naivists

+0

Я попытался изменить адрес электронной почты, и теперь у меня другая ошибка: Warning: mail() [function.mail]: SMTP-сервер: 530 Реле не разрешено в .. – leddy

+0

следующий вопрос, как SMTP настроен в вашем PHP.ini, как вы отправляете эти электронные письма - с вашего локального SMTP-сервера с вашего сервера поставщика? Проверьте раздел '[mail function]' в файле php.ini. – naivists

ответ

3

Отправка одного E-Mail с использованием mail не должна занимать 30 секунд. Никогда. Вам следует поговорить с администратором сервера, если вы не отправляете почту сотням или тысячам получателей, или E-Mail - это десятки мегабайт. Кажется, однако, что это не так. Я бы предположил, что команда sendmail, вызывающая внутренне, слишком долго реагирует по какой-либо причине.

Это полный скрипт, который вы выполняете?

+0

Посмотрите оригинальное сообщение ниже тега PHP. там написано «и т. д.», поэтому в этом (по-видимому, но не) неуместном фрагменте кода должно быть что-то ресурсное стимулирование. –

+0

, что не должно быть причиной таймаута, поскольку в соответствии с OP электронная почта отправляется (время ожидания будет происходить до этого) –

+0

Это может показаться немного странным, но что, если таймаут запускается именно после почта отправляется в ядре PHP, а не после возвращения функции? Я не уверен, что это возможно, но так или иначе. –

1

Попробуйте использовать set_time_limit(0) для удаления лимита времени PHP Execution. Это может работать неправильно, если у вас есть safe_mode, но он должен работать иначе.

+0

Это лечение симптома, но не причина. – Gordon

+0

Если он зацикливается и отправляет много писем, это может произойти легко. mail() является SLOW. Я видел, что для отправки 6 писем требуется 4-5 секунд. – Erik