ローカルのsendmailではなくSMTPサーバーのみを使用するようにphpのmail()コマンドを構成できるかどうか誰かが知っていますか?メールが迷惑メールとしてマークされるのに問題があります。
サーバーはRedHat5Enterpriseを実行しています。
SMTPクライアントとして機能するさまざまなPHPライブラリを知っていますが、mail()がSMTPサーバーを直接使用するようにPHPを構成したいと思います。
このマニュアルページによると、Windowsでのみ可能です。
これらのリンクを確認してください。
例:
更新:これを使用できますが、呼び出された各mail()関数でSMTPソケットを開いたり閉じたりします。
<?php
$to = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
PEAR Mailパッケージを使用して、SMTP 経由で直接送信できます。SMTP メールを機能させるには、 Net_SMTPもインストールする必要があります。多くのサーバーでは、これらはデフォルトでインストールされています。これらのライブラリのコピーをローカルにダウンロードして、サイトのディレクトリまたはインクルード パスにアップロードすることもできます。これは理想的なソリューションではありませんが、機能的です。
mail()
PHP のデフォルトではなく SMTP を介して送信する、古い関数のドロップイン置換を探している場合は、すべてのパラメーターを正しい順序などで設定するトランスレーター関数を作成する必要があります。ここにそのようなスクリプトの例があります - 明らかに、必要な設定に合わせて変更する必要があります: http://tltech.com/info/php-mail-via-smtp/
いいえ、理由は、すべての Linux/Unix システムに「sendmail」ツールが必要だからです。この外部ツールの利点は、タイムアウトや応答のない SMTP サーバーを処理できるため、メールが実際に送信されている可能性が高くなることです。Windows 用の SMTP クライアントの実装は、"sendmail" がそこに存在しないという事実に対する回避策です。
私のアプローチは、SMTP を使用して別のサーバーと通信するだけの sendmail 互換ツールを使用することです。そのための簡単なツールは ssmtp です (ソースはこちらから入手できます) 。
アップストリーム メール サーバーをリレーとして使用するように、ローカルの sendmail を構成するだけです。そうすれば、PHP 側で何も変更する必要はありません。
SMTP を使用して PHP から直接メールを送信するのは得策ではありません。エラー処理からキューイングまですべてが失われるからです。