PHP отправить почтовый код не работает - PullRequest
4 голосов
/ 09 июля 2009
$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 () [function.mail]: «sendmail_from» не установлено в php.ini или пользовательский заголовок «From:» отсутствует в C: \ xampp \ htdocs \ mail.php в строке 5 Не удалось доставить сообщение ...

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

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

Ответы [ 6 ]

2 голосов
/ 09 июля 2009

дополнительные_заголовки (необязательно)

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

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

Примечание: при отправке почты почта должна содержит заголовок From. Это можно установить с параметром Additional_headers, или по умолчанию можно установить в php.ini. В противном случае это приведет к сообщение об ошибке, похожее на предупреждение: mail (): "sendmail_from" не установлен в php.ini или пользовательский заголовок "From:" отсутствует. Заголовок From также устанавливает Return-Path под Windows.

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

1 голос
/ 12 сентября 2012

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

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

$from = 'fromemail@domain.com'
$xheaders = "From: " . $from . " <" . $from . ">\n"; 
$i = mail("$useremail","$subject","$content",$xheaders,'-f fromemail@domain.com'); 
1 голос
/ 09 июля 2009

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

1 голос
/ 09 июля 2009

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

Если это не так, укажите заголовок From, как указано usoban

$hdrs="From: jijodasgupta@gmail.com";
mail($to, $subject, $body, $hdrs);
0 голосов
/ 09 июля 2009

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

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

  • PHPMailer - стандарт де-факто
  • http://swiftmailer.org/ - более современный подход, но меньшая база пользователей
0 голосов
/ 09 июля 2009

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

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

...