Я пытаюсь использовать функцию 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 (), чтобы убедиться, что вы редактируете правильный файл:
Если отредактированный файл не указан в одном из этих разделов, изменения не будут иметь никакого эффекта.
Я решил проблему, воспользовавшись модулем 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 );