Почему этот короткий скрипт php не отправляет электронную почту? - PullRequest
4 голосов
/ 04 июня 2010

Я не могу получить свой 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

Оператор echo выводится в браузере, поэтому я знаю, что файл 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 мне следует настроить в любом случае?

Ответы [ 6 ]

4 голосов
/ 04 июня 2010

Вы раскомментировали 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 (пароль) аутентификацию, чтобы исключить это.

2 голосов
/ 04 июня 2010

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

1 голос
/ 04 июня 2010

У меня теперь есть ОТВЕТ на мой вопрос ...

Я использовал phpinfo (), чтобы узнать, какой файл php.ini я должен был редактировать. Как оказалось, в моей папке на сервере было 3 таких файла. Два были в папке PhP (названные php.ini и php5.in соответственно), а другой был в папке apache / bin. Используя функцию phpinfo (), я смог определить, что я редактировал неправильные файлы .ini (я посмотрел на параметры, которые я устанавливал, и они не менялись). Как только я отредактировал правильный (тот, что в apache / bin) Предупреждение: 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
1 голос
/ 04 июня 2010
sendmail_from = email@address.my

Имейте в виду: должно быть =

0 голосов
/ 04 июня 2010

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

<?php
mail('email@example.com', 'Subject', 'Message', array('From' => 'me@example.com'));
?>
0 голосов
/ 04 июня 2010

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

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