2012-02-06 7 views
2

PHPList(バージョン2.10.17)は、次のいずれかの形式に一致するアドレスにメッセージを送信するために失敗したために失敗しました 問題のコードされる:選択されたコード・パスはPHPListは、電子メールの末尾に、有力とアドレス、または複数の隣接ドット

function MailSend($header, $body) { 
    $to = ""; 
    for($i = 0; $i < count($this->to); $i++) 
    { 
     if($i != 0) { $to .= ", "; } 
     $to .= $this->to[$i][0]; 
    } 

    if ($this->Sender != "" && (bool) ini_get("safe_mode") === FALSE) 
    { 
     $old_from = ini_get("sendmail_from"); 
     ini_set("sendmail_from", $this->Sender); 
     $params = sprintf("-oi -f %s", $this->Sender); 
     $rt = @mail($to, $this->EncodeHeader($this->Subject), $body, 
        $header, $params); 
    } 
    else 
     $rt = @mail($to, $this->EncodeHeader($this->Subject), $body, $header); 

    if (isset($old_from)) 
     ini_set("sendmail_from", $old_from); 

    if(!$rt) 
    { 
     $this->SetError($this->Lang("instantiate")); 
     return false; 
    } 

    return true; 
} 

テスト目的でPHPListをセットアップした自分のWebサーバーでこのエラーを再現できませんでした。
残念ながら、この動作を示す唯一のシステムは本番システムです。それに加えて、私はそのシステム上のログファイルにアクセスすることができないので、何が間違っているのか分かりません。
この作業を行うには、$toの「文字列エスケープ」が必要ですが、いくつかのログ出力を挿入する以外には、本番システムを改ざんすることに多少なりとも反対しています。

誰かがこの種の問題の回避策を知っていますか?

+0

あなたはエラーを抑圧していますが、なぜそうしますか?あなたのコードが実行されるたびに、神は子猫を殺します。私はあなた自身を誇りに思うことを願っています。 –

+0

@ truth lol。あなたは誤りを抑圧することについて正しいです。そんなことしたらダメ。 – ThinkingMonkey

+0

@ Truth err ...私はそうではありません。彼らがなぜそれをするのかをPHPListの人に尋ねなさい...彼らにはたくさんの理由があると確信している。その理由は、スクリプトがcronジョブによって実行されるためです。 – yas4891

答えて

3

これはエラーではありません。電子メールアドレスのローカル部分(@の前の部分)は、最初の文字でも最後の文字でもない限り、.を含む場合があり、2回以上連続して表示されない場合もあります。つまり、3つの例すべてが無効なメールアドレスです。

valid email addressesについてさらに読む。

+0

興味深い。どうもありがとう。しかし、私はこれが最新のバージョンにアップグレードする前に働いたと言われてきました。以前にインストールされたバージョンでこの問題が発生しました(回避されました)。残念ながら、彼らがこの問題を回避する方法についての情報は失われました。 – yas4891

+1

アップグレード前に正常に機能していれば、無効な電子メールアドレスを伝えることができたバグがシステムに存在することを意味します。彼らがスリップした場合、チャンスはほぼ100%に近く、とにかく意図された目的地に行かない可能性があります。明らかに、私のサーバー上のテストから彼らが通過する@colithium – colithium

+0

明らかに。それはいくつかの設定 – yas4891

関連する問題