Вопрос

$to = "jijodasgupta@gmail.com";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
if (mail($to, $subject, $body)) {
  echo("pMessage successfully sent!/p");
} else {
  echo("pMessage delivery failed.../p");
}

Написал базовый php-код sendmail, который, но он выдает мне следующую ошибку:

Предупреждение:mail() [функция.mail]:"sendmail_from" не задан в php.ini или пользовательский заголовок "From:" отсутствует в C:\xampp\htdocs\mail.php в строке 5 Ошибка доставки сообщения...

Я изменил файл `php.ini и поместил sendmail_from=jijodasgupta@gmail.com но проблема по-прежнему сохраняется.Написание почтового скрипта в первый раз.

Я делаю что-то не так?Есть ли лучший способ сделать это?

Это было полезно?

Решение

additional_headers (необязательно)

Строка, которая будет вставлена в конце заголовка электронного письма.

Обычно это используется для добавления дополнительных заголовков (From, Cc и Bcc).Несколько дополнительные заголовки должны быть разделены символом CRLF ( ).

Примечание:При отправке письма оно должно содержать заголовок From.Это можно установить с помощью параметра additional_headers, или установить значение по умолчанию в php.ini.Невыполнение этой процедуры приведет к сообщение об ошибке предупреждения:почта ():"sendmail_from" не задан в php.ini или пользовательском заголовке "From:" отсутствует.Заголовок From также задает Обратный путь в Windows.

Я надеюсь, что это поможет.

Другие советы

Прежде всего, убедитесь, что вы отредактировали правильный php.ini - add phpinfo(); в ваш скрипт выводится диагностическая информация, включая местоположение php.ini.Вы также должны быть в состоянии увидеть настроенное значение "sendmail_from" и здесь.

В противном случае укажите заголовок From, как указано в усобан

$hdrs="From: jijodasgupta@gmail.com";
mail($to, $subject, $body, $hdrs);

Если вы отредактировали правильный php.ini и он не отражает внесенных вами изменений, возможно, вам захочется перезапустить свой веб-сервис, поскольку многие среды загружают php.ini только при запуске сервера.

Я столкнулся с той же проблемой, и в итоге это произошло из-за того, что мой сервер использовал account@servername как адрес электронной почты from, хотя я указал свой собственный в заголовках.

Ответ, который я нашел где-то еще, заключался в добавлении 5-го параметра к вызову mail, чтобы заставить систему использовать указанный мной адрес электронной почты From :

$from = 'fromemail@domain.com'
$xheaders = "From: " . $from . " <" . $from . ">\n"; 
$i = mail("$useremail","$subject","$content",$xheaders,'-f fromemail@domain.com'); 

Вместо того чтобы задавать адрес формы в php.ini, просто отправьте его в заголовках, как сказал usoban.

Это избавит вас от головной боли, когда вы разместите другой сайт с той же настройкой и забудете установить заголовки в следующий раз.

Функция PHP mail() порождает множество проблем.Когда вы, наконец, заработаете это на своем сервере, вы заметите, что ваши электронные письма попадают в папки со спамом ваших пользователей.

Я бы порекомендовал отправлять почту, используя вместо этого одну из этих библиотек PHP SMTP:

  • PHPMailer - стандарт де -факто
  • http://swiftmailer.org/ - более современный подход, но при этом меньшая база пользователей
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top