PHPにてメールを受け取り転送するプログラムを書きました。
全てのメールは転送はされるのですが、
①たまに同じ時刻で同じメールが2通転送されることがあります。
②たまに1、2分違いで同じメールが転送されることがあります。
環境としては、この転送プログラムに、一斉に複数通(違うメールアドレス)入って来ることもあります。
つまり連続して動くことも多いです(⬅️もしここに原因があればと思い書きました)。
2重で送られてしまう考えられる原因派なんでしょうか
ちなみに sendmail の-f はサーバーの関係上使えません。
popen("/usr/sbin/sendmail -f
$input = file_get_contents("php://stdin"); //-------------------------------------------------- //fromを抽出 //-------------------------------------------------- $mail=$mail_data->headers['from']; $mail = addslashes($mail); $mail = str_replace('"','',$mail); //署名付きの場合の処理を追加 preg_match("/<.*>/",$mail,$str); if($str[0]!=""){ $str=substr($str[0],1,strlen($str[0])-2); $mail = $str; } //-------------------------------------------------- //toを抽出 //-------------------------------------------------- $mail_to=$mail_data->headers['to']; $mail_to = addslashes($mail_to); $mail_to = str_replace('"','',$mail_to); //署名付きの場合の処理を追加 preg_match("/<.*>/",$mail_to,$str); if($str[0]!=""){ $str=substr($str[0],1,strlen($str[0])-2); $mail_to = $str; } $row['mail']="adb@defg.jp"; $sendmail = popen("/usr/sbin/sendmail ".$row['mail'], "w"); $input2=str_replace("\nTo: ".$mail_to,"\nTo: ".$row['mail'],$input); $input2=preg_replace('/\nTo: ([^<]*)<'.quotemeta($mail_to).'>/',"\nTo: $1<".$row['mail'].">",$input2); $input2=preg_replace('/Return-Path: [^\n]+\n/',"Return-Path: ".$mail."\nReply-To: ".$mail."\n",$input2); fwrite($sendmail, $input2); pclose($sendmail);
追記
サーバー:Xサーバー
メール振り分け機能(forwardのようなものだと思います。)で受信したメールを任意のPHPに送信しています。
回答1件
あなたの回答
tips
プレビュー