0

電子メールがまったく送信されないことから始めましたが、関数で「-f」パラメーターを使用しました。これにより、外部アドレス (Gmail と Hotmail はこれまでにテスト済み) に送信できますが、アドレスに対しては機能しません。ただし、ドメイン上にあります。それがコードにあるのか、それともサーバーのセットアップに問題があるのか​​ 疑問に思っていますか?

if ($Valid == 1) {
    $_POST = array_map('strip_tags', $_POST);
    $_POST = array_map('stripslashes', $_POST);

    $To = "user@domain.ca";

    $Subject = "Online Driver Application";
    $Body = "All the values of the form that was filled out (removed because there was a lot and it doesn't affect the problem)";

    $Headers  = 'MIME-Version: 1.0' . "\r\n";
    $Headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $Headers .= 'From: Company <info@domain.ca>' . "\r\n";
    $Headers .= 'Reply-To: no-reply@domain.ca' . "\r\n";
    $Headers .= 'X-Mailer: PHP/' . phpversion();

    mail($To, $Subject, $Body, $Headers, -finfo@domain.ca);

    echo '<div class="success">Thank You! Your form has been successfully submitted.</div>';
} else {
    if ($ErrorMsg != '') {
        echo '<div class="error">'.$ErrorMsg.'</div>';  
    }

繰り返しますが、メール機能に -finfo@domain.ca を指定しない限り、電子メールはまったく送信されません。

ありがとう。

4

2 に答える 2

0

パラメーター( additional_parameters-f または -r) を使用して、sendmail_path 構成設定で定義されているように、メールの送信時に使用するように構成されたプログラムにコマンド ライン オプションとして追加のフラグを渡すことができます。たとえば、-f sendmail オプションを指定して sendmail を使用する場合、これを使用してエンベロープ送信者アドレスを設定できます。

additional_parameters( > 4.2.2) は無効になってsafe_modeおり、mail() 関数は警告メッセージを公開し、使用すると FALSE を返します。

このメソッドを使用してエンベロープ送信者 (-f) が設定されている場合に、「X-Warning」ヘッダーがメッセージに追加されないように、Web サーバーを実行するユーザーを信頼できるユーザーとして sendmail 構成に追加する必要があります。sendmail ユーザーの場合、このファイルは/etc/mail/trusted-users.

(または、問題が解決しない場合は、sendmail を削除して postfix をインストールします (はるかに簡単です)。)

于 2013-11-05T17:02:29.247 に答える
0

コードは問題ないようです。これはおそらく、正しく設定されていないものです (PHP.ini に SMTP サーバーがない、またはファイアウォールが何かをブロックしているなど)。また、改行が入っていることを確認し"\n"$Bodyください。これが原因でメール サーバーがメールを拒否しているのを見たことがあります。メールを直接使用するのは常に注意が必要です。代わりにSwiftmailerPHPMailerなどのライブラリを使用してみてください。これにより、HTML や添付ファイルの送信方法について心配する必要がなくなります。

于 2013-11-05T16:52:20.177 に答える