PHP - функция mail() не работает на моем хостинге

У меня есть простой скрипт, который отлично работает на любом другом моем сервере, но на том, который мне нужен, он не работает.

<?php
$mail = mail('[email protected]', 'My Subject', 'msg');
?>

Я пытался позвонить провайдеру веб-хостинга, но не могу до него дозвониться. Также пытался погуглить несколько советов, но, похоже, ни у кого нет такой же проблемы.

Сценарий не показывает никаких сообщений об ошибках, он просто ничего не делает.

Знаете ли вы, в чем проблема, или какой-либо другой способ отправить электронное письмо?

Спасибо


person Mike    schedule 24.08.2009    source источник
comment
виндовс или линукс хост? Windows обрабатывает это совершенно по-другому   -  person Dave Archer    schedule 24.08.2009
comment
Хорошо, я наконец связался с хостинг-провайдером, и мы выяснили, что он работает для некоторых писем, а для других нет ... например, моя почта [email protected] (не работает), а на [email protected] оно работает ..   -  person Mike    schedule 24.08.2009
comment
Дубликат (IMO): stackoverflow.com/questions/745690/   -  person DisgruntledGoat    schedule 24.08.2009


Ответы (4)


Похоже, что sendmail не настроен на вашем сервере.

Что вы можете сделать, так это создать учетную запись электронной почты на f.e. gmail, yahoo mail или аналогичный и используйте Zend_Mail для отправки почты из этого учетная запись с помощью SMTP.

Я взял этот пример кода из документации Zend Framework:

$config = array('auth' => 'login',
                'username' => 'myusername',
                'password' => 'password');

$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);

$mail = new Zend_Mail();
$mail->setBodyText('This is the text of the mail.');
$mail->setFrom('[email protected]', 'Some Sender');
$mail->addTo('[email protected]', 'Some Recipient');
$mail->setSubject('TestSubject');
$mail->send($transport);

Это не требует настройки sendmail, так как вы используете уже существующий почтовый сервер, который разрешает smtp.

ОБНОВЛЕНИЕ: Как указал toto, вполне возможно, что SMTP также заблокирован вашим хостером. В этом случае вы можете попробовать использовать SSL, просто добавив две записи в конфигурацию Zend_Mail, которая должна выглядеть следующим образом:

$config = array('auth' => 'login',
                'username' => 'myusername',
                'password' => 'password',
                'ssl' => 'ssl',
                'port' => 465);

Надеюсь это поможет.

person André Hoffmann    schedule 24.08.2009
comment
Обратите внимание, что многие хостеры блокируют это (используя smtp-сервер за пределами вашего домена), чтобы избежать спамеров... :) - person Toto; 24.08.2009

Сценарий не обязательно будет показывать ошибки, в случае сбоя $mail будет ложным.

Некоторые возможности

  • Ваш хост мог заблокировать эти порты.

  • Если это хост Windows, возможно, вы не настроили настройки почты в php.ini.

  • Взгляните на страницу руководства php mail . В примерах показано, что вы можете добавить дополнительные заголовки. Почтовый сервер, к которому подключается ваш хост, может потребовать определенных основных заголовков.

person Dave Archer    schedule 24.08.2009

Только эта хостинговая компания может ответить. Мы можем только делать предположения.

А просто сказал: если этот код работает с другими хостинговыми компаниями, а не с этой. Это, безусловно, проблема с конфигурацией (php.ini, smtp-шлюз/сервер, локальный брандмауэр и т. д.).

Дешевые хостинговые компании обычно имеют очень хорошую службу поддержки. ;) Так что продолжайте пытаться достучаться до них или успокоить их (представьте себе день, когда у вас возникнет большая проблема)....

person Toto    schedule 24.08.2009

Если возможно, убедитесь, что ваш сервер преобразует seznam.cz в правильный IP-адрес. Однажды у меня была похожая проблема, когда DNS моего сервера думал, что на нем размещен определенный домен, поэтому все электронные письма на этот домен никогда не покидали ящик! Нам потребовалось время, чтобы понять это.

Вероятно, у вас нет этой проблемы, но проверить не помешает.

person Colin O'Dell    schedule 24.08.2009