Функция php5 mail () sendmail error

Я пытаюсь использовать функцию mail () php, но продолжаю получать ошибку. Я установил sendmail через sudo apt-get install sendmail , отредактировал файл /etc/php5/cli/php.ini добавив следующий текст в эти строки:

  sendmail_path = /usr/sbin/sendmail -t sendmail_from = uslonsweb003.ALU@no-reply.com 

Затем я перезапустил свой веб-сервер и использовал эту команду для теста:

  :~$ php -r "mail('sadmicrowave@gmail.com', 'test subject', 'test body message');" 

но я получаю следующую ошибку: EVERYTIME !!!:

  sh: -t: not found 

Это странно, потому что я пробовал sendmail_path с -t и без -t, но я все равно получаю ту же ошибку. Что я делаю не так?

ОБНОВИТЬ! это то, что показывает мой phpinfo (): (я добавил -t назад, но команда не работает с ним или без него).

введите описание изображения здесь

Другое ОБНОВЛЕНИЕ –

Я прокомментировал строки sendmail_path и sendmail_from, чтобы начать с нуля, ожидая, что функция mail () будет жаловаться на то, что php не знает, что это такое, но вместо этого я получаю ТОЧНУЮ ту же ошибку, что и раньше (даже без двух строк целиком !!). Это заставляет меня думать, что он не связан с программой sendmail или функцией mail () вообще …

Я не знаю, но вы можете попробовать sendmail_path = /usr/sbin/sendmail -t -i . Он настроен так на веб-хостинг, который я использую. В противном случае вы можете проверить, содержит ли phpinfo() правильные настройки для sendmail .

Я беру ошибку, чтобы указать, что вам не хватает информации, которую -t будет искать, «To:», «CC:» или «BCC:»

Попробуйте добавить дополнительную информацию в свою почтовую командную строку и посмотрите, работает ли это:

 php -r "mail('sadmicrowave@gmail.com', 'test subject', 'test body message', 'To: Receiver <receiver@email.com>');" 

Посмотрите следующие разделы на вашем выходе phpinfo (), чтобы убедиться, что вы редактируете правильный файл:

  • Загруженный файл конфигурации
  • Дополнительные .ini-файлы проанализированы

Если отредактированный файл не указан в одном из этих разделов, изменения не будут иметь никакого эффекта.

Я решил проблему, воспользовавшись модулем SwiftMailer, где я могу указать почтовый сервер для ретрансляции. Я использовал почтовый сервер моей компании как свойство сервера и продолжал указывать параметры следующим образом:

 require_once('/var/www/global/swiftmailer/lib/swift_required.php'); $transport = Swift_SmtpTransport::newInstance( 'mailout.usa.mycompany.com', 25 ); $mailer = Swift_Mailer::newInstance( $transport ); $message = Swift_Message::newInstance( 'Suggestion Status Update' ) ->setFrom( array( 'uslonsweb003@no-reply.com' => 'SuggestionBox' ) ) ->setTo( array( $pEmail => $username ) ) ->setBody( $body, 'text/html' ) ; $result = $mailer->send( $message );