Почему этот короткий скрипт php не отправляет электронную почту?

Я не могу заставить свой php-скрипт отправлять электронную почту.

<?php echo "Does this page work?"; mail('my email address', 'test subject', 'test message'); ?> 

Во-первых, я установил параметры почтовой функции в файле php.ini следующим образом:

Я проверил настройки учетной записи электронной почты в Outlook. Он не требует аутентификации, его порт равен 25, а его тип зашифрованного соединения – «Авто». Учитывая это, я настроил файл php.ini следующим образом:

 SMTP = ssl://smtp1.iis.com smtp_port = 25 

Затем я установил:

 sendmail_from = my email address 

Вывод эха выводится в браузере, поэтому я знаю, что файл php распознается и обрабатывается. Но браузер также показывает следующую ошибку:

 Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\xampp\htdocs\mailtest.php on line 3 

Я четко установил sendmail_from, поэтому не знаю, что еще делать. Я также попытался удалить часть «ssl: //» из настройки SMTP в файле php.ini и настроить файл php5.ini. Какой из этих .ini-файлов я должен настраивать?

Related of "Почему этот короткий скрипт php не отправляет электронную почту?"

Вы раскомментировали sendmail_from в php.ini , да? Он должен выглядеть так:

 ; For Win32 only. sendmail_from = me@example.com 

Не так:

 ; For Win32 only. ;sendmail_from = me@example.com 

Единственная причина, по которой PHP говорит, что он не установлен, – это, ну, если он не установлен.

редактировать

Единственная проблема, о которой я мог думать (для этого предупреждения), это то, что вы можете редактировать неправильный файл php.ini. Если это действительно задано , PHP не должен выдавать это предупреждение. Я считаю, что настройка PHP по умолчанию на вашей платформе – \xampp\php\php.ini

Edit2

Ваш SMTP-хост может использовать что-то, называемое pop-before-smtp . Попробуйте использовать другой почтовый провайдер, который использует аутентификацию SMTP (пароль), чтобы это исключить.

Чтобы ответить на ваш вопрос о том, «какой из этих файлов .ini должен быть настроен», вы можете запустить phpinfo (), чтобы просмотреть конфигурацию своего сервера. Это перечислит пути ко всем вашим файлам конфигурации.

 sendmail_from = email@address.my 

Обратите внимание: должно быть a =

У меня теперь есть ОТВЕТ к моему вопросу …

Я использовал phpinfo (), чтобы узнать, какой файл php.ini мне должен был редактировать. Как оказалось, в моей папке сервера было 3 таких файла. Два из них находились в папке PhP (по имени php.ini и php5.in соответственно), а другая – в папке apache / bin. Используя функцию phpinfo (), я смог определить, что я редактировал неправильные .ini-файлы (я смотрел параметры, которые я устанавливал, и они не менялись). Как только я отредактировал правильный (тот, что в apache / bin), появляется сообщение Warning: mail () [function.mail]: «sendmail_from» ….

Затем, чтобы получить отправленную почту, я отредактировал правильный .ini-файл, как изначально поставленный в моем вопросе:

 SMTP = myoutgoingmail.com (the same setting as my mail program - outlook) smtp_port = (the same as my mail program - oultook) sendmail_from = myemailaddress.com 

Я ненавижу указывать на что-то настолько ужасно очевидное, если это намеренное орфографическое письмо, но в вашей SMTP-строке не должно быть ssl: // smtp 1.iis.com?

Вам нужно передать заголовок «From» для функции mail (). Я считаю, что параметр sendmail_from применим только к средам Windows. Попробуйте это вместо этого:

 <?php mail('email@example.com', 'Subject', 'Message', array('From' => 'me@example.com')); ?>