0

わかりましたので、私が取り組んでいるサイトの 2 つの別々のページに php メーラーを設定しました。私は以前、私が構築したサイトのメーラーですべての作業を行っていましたが、すべての変数を設定した後に電子メールを設定する方法は簡単でした:

mail("$email",
     "Receipt: $thesubject",
     "$message",
     "From: $replyemail\nReply-To: $replyemail");

これが連絡先(処理中)ページの最後にあったものです。$email と $replyemail を $message に入れると、$email で指定されたメールに送信されるメッセージに正しく表示されます。

私が本当に理解していない部分は、メッセージが送信元であると言っているアドレスが $replyemail ではなく、送信元であると言っているということです:

rtl.srv@gmail.com

同様の投稿をいくつか見ましたが、どれも問題を解決していませんでした。これに従ってサーバーのphp.iniファイルにSAFE_MODE = offがあることを確認しました。その後追加

'-f $replyemail'

そのリンクのように上記のメール機能の最後までアドバイスされましたが、何も変わりませんでした...ファイル/ etc/mail/trusted-usersにメールアドレスを追加する必要があるかもしれないと説明している他の場所を見ましたが、問題は、電子メールが動的であることです。その電子メール名は、ユーザーが電子メールとして入力したものであるためです。次に、メールがサイト管理者に送信されて確認されます。フォームに記入したユーザーのメールからのものであることをメールに伝えたいです。

変数が電子メールのメッセージ内に正しく出力されているため、変数が正しく設定されていることがわかります。したがって、なぜこれが起こっているのか、またはどのように修正できるのか、誰かが何か考えている場合は、洞察をいただければ幸いです。

プロジェクトはワードプレスで構築されていますが、SSHを介してファイルをサーバーにドロップしただけで、それが関係しているかどうかはわかりません.

ありがとう、

-アラン

4

2 に答える 2

0

これを自分自身にしないでください。phpmailerswiftmailerなどの成熟したライブラリを使用すると、この種の問題を回避するのに役立ちます...さらにインクルードがあることは知っていますが、これと戦う意味はありません。それでもこれをやりたい場合は、ヘッダーを設定してみてくださいReturh-path

于 2013-01-03T01:57:00.717 に答える
0

これを引き起こす可能性のある問題はいくつかあります。私は少し前にサイトを構築したときにこの問題に遭遇しました。最初にメールアウトを処理する関数を作成して解決しました。

function mailouthtml($to, $title, $body, $from){
    if(!isset($from)){
        $from = 'Default Sender<address@example.com>';
    }
    $header .= "Reply-To: $from\r\n"; 
    $header .= "Return-Path: $from\r\n"; 
    $header .= "From: $from\r\n"; 
    $header .= "Organization: Example.com, Inc.\r\n"; 
    $header .= "Content-Type: text/html\r\n"; 
    mail($to,$title,$body,$header,"-f $from");
}

これを少し分解してみましょう。この関数は、To アドレス、電子メールのタイトル、電子メールの本文、および From アドレスを呼び出します。From アドレスは、電子メール ヘッダーに情報を追加するために使用されます。メールのヘッダー情報は、メールサーバーにメールの処理方法を伝えるものであり、メッセージを適切に処理するために少しの情報が必要です.

PHP の mail() 関数は、次のようにフォーマットされます。

mail($to,$title,$body,$headers,$additional_parameters);

ここで作成した mailouthtml() 関数は、ヘッダーを手動で作成し、追加パラメーター「-f $from」を追加して「From」フィールドを明示的に設定します。$from 変数は、関数呼び出しではオプションです。存在しない場合は、デフォルトが設定されます。メール機能の詳細については、こちらをご覧ください

次の点に注意してください。

  • ほとんどの MTA には Reply-To、Return-Path、および From フィールドが必要です。そうしないと、スパムとしてフラグが立てられる場合があります。
  • Content-Type は、メール サーバーが配信するコンテンツのタイプ (通常は text/html または text/plain) を示すために必要です。
  • 指定されていない場合にデフォルトのアドレスを設定する if(){} ステートメントがあります。名前を指定したくない場合は、「デフォルトの送信者」を省略できます。これを好きなように変更することもできます。
  • 組織はオプションです。

また、ドメイン名でSPFを有効にし、メッセージでDKIM署名を行うことをお勧めします。これらは両方とも、ドメイン名の DNS エントリを介して実装されます。それにアクセスできなくても、大したことではありません。スパムを制御するためのものです。

また、専用サーバーと独自の IP アドレスがある場合は、逆引き DNSレコードが設定されていることを確認してください。これは、外国の MTA があなたのメッセージを本物であると識別するのにも役立ちます。

于 2013-01-03T01:48:14.627 に答える