PHP: функция mail () с runtime ini_set () для SMTP и SMTP_PORT не работает в Linux

Я использовал PHP-код для рассылки, используя SMTP HOST, как указано ниже:

ini_set('SMTP','myserver'); ini_set('smtp_port',25); $to = $email; $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n"; $headers .= "From: NO-REPLY<no-reply@mydomain.com>" . "\r\n"; $subject = "Confirmation For Request"; $message = '<html> <body> <p>Hi '.$firstname.' '.$lastname.'</p> <p> We recieved below details from you. Please use given Request/Ticket ID for future follow up: </p> <p> Your Request/Ticket ID: <b>'.$ticketID.'</b> </p> <p> Thanks,<br> '.$team.' Team. </p> </body> </html>'; mail( $to, $subject, $message, $headers ); 

Теперь, когда я выполняю код в Windows Localhost .. Я успешно получаю почту, тогда как если я использую тот же код в моей настройке Linux, я не получаю nomail, хотя функция mail () возвращает true в машине linux. …

Изучая phpinfo как для локального, так и для Linux-сервера Windows, для параметров почты я нашел единственное различие,

В Windows я нашел sendmail_path == «Нет значения», тогда как на сервере Linux он говорит: «usr / sbin / sendmail -t -i»

Может ли кто-нибудь помочь мне решить эту проблему?

ПРИМЕЧАНИЕ. В Windows это настройка WAMP, тогда как Linux – выделенный сервер …

Если вы ищете свой php.ini есть краткое описание, которое

 ini_set('SMTP','myserver'); ini_set('smtp_port',25); 

Это оба значения предназначены только для Windows. Поэтому, если вы хотите отправлять почту через SMTP на linux, вам нужно установить постфикс, например, и создать реле.

https://www.linode.com/docs/email/postfix/postfix-smtp-debian7

Или что намного проще использовать lib, который может отправлять почту SMTP через сокет или завиток, например Swiftmailer.

http://swiftmailer.org/docs/sending.html

Это намного проще и работает.

Я посмотрел на это до и в PHP.ini есть два ключа sendmail_from http://php.net/sendmail-from (для Win32) и sendmail_path http://php.net/sendmail-path (для Unix) по типу или аналогичной настройке для linux по умолчанию этот ключ является me @ localhost, который, когда на фактическом почтовом сервере он должен отклонять этот адрес электронной почты как пользователя, которого они не существуют на сервере.

Попробуйте добавить что-то вроде …

 ini_set('sendmail_from','admin@example.co.uk')