web-dev-qa-db-ja.com

PHP:SMTPおよびSMTP_PORTのランタイムini_set()がLinuxで機能しないmail()関数

以下に示すように、SMTPホストを使用したメール送信にPHPコードを使用しました:

        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<[email protected]>" . "\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セットアップで同じコードを適用すると、メールを受信しませんが、mail()関数はLinuxマシンでもtrueを返します。 .。。

Windows localhostとLinuxサーバーの両方のphpinfoを調べたところ、メールパラメータについて、1つの違いが見つかりました。

Windowsではsendmail_path == "No Value"が見つかりましたが、Linuxサーバーでは "usr/sbin/sendmail -t-i"と表示されます。

誰かがこの問題を解決するのを手伝ってもらえますか?

注:WindowsではWAMPセットアップですが、Linuxは専用サーバーです...

3
Padyster

私は以前にこれを見たことがあり、PHP.iniには2つのキーがありますsendmail_fromhttp://php.net/sendmail-from (Win32の場合)およびsendmail_pathhttp://php.net/sendmail-path (Unixの場合)LinuxのWampまたは同様のセットアップでは、このキーのデフォルトはme @ localhostであり、実際のメールサーバーではme @localhostになります。その電子メールアドレスはサーバー上に存在しないため、ユーザーとして拒否します。

次のようなものを追加してみてください...

ini_set('sendmail_from','[email protected]')
0
user2762134