Я не могу заставить свой 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-файлов я должен настраивать?
Вы раскомментировали 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')); ?>