2011-06-17 3 views
0

私はバイヤーが売り手にメールを送るために記入するPHPメールフォームを持っています。私のlocalhost MAMPサーバーでテストしていることを除いて、すべてうまく動作します。電子メール本文に "localhost"という単語を送信しようとするとPHPメールが壊れる - とても変わった

問題:$ message1(電子メール本文)は$ _POST ['textarea']に由来しています。フォームテキストエリア(電子メール本文に配置された)を介して送信されたURL「http:// localhost」がある場合、ダングメールは決して配信されません。 http://www.anythingelse.comはうまくいきます....私はかなり困惑しています。フォームを通じて送信されるローカルホストのURLを無効にするいくつかの安全機能はありますか?

私のコードに他の目障りなエラーがある場合、どんな助けもありがとうございます。

よろしく、 ダニエル

public function saleRequest($seller_email, $seller_username, $buyer_email, $buyer_username, $book_title, $subject1, $message1) { 


    define("NAME","xxxxxxx"); 
    define("FROM",$buyer_email); 

    $subject = substr_replace($subject1, '', 30); 

    // -=-=-=-=- MAIL HEADERS 

    $mime_boundary = md5(time()); 
    $headers = "From: ".NAME." <".FROM.">\n"; 
    $headers .= "MIME-Version: 1.0\n"; 
    $headers .= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\";\n\n"; 

    // -=-=-=-=- TEXT EMAIL PART 

    $message = "--$mime_boundary\n"; 
    $message .= "Content-Type: text/plain; charset=UTF-8\n"; 
    $message .= "Content-Transfer-Encoding: 8bit\n\n"; 

    $message .= wordwrap(stripslashes($message1), 30, PHP_EOL)."\n"; 

    // -=-=-=-=- HTML EMAIL PART 

    $message .= "--$mime_boundary\n"; 
    $message .= "Content-Type: text/html; charset=UTF-8\n"; 
    $message .= "Content-Transfer-Encoding: 8bit\n\n"; 

    $message1 = $message1."this is html"; 

    $message .= nl2br(wordwrap(stripslashes($message1), 30, "<br>"))."<br>\n"; 

    // -=-=-=-=- FINAL BOUNDARY 

    $message .= "--$mime_boundary--\n\n"; 
    unset($mime_boundary); 
    return mail($seller_email,$subject,$message,$headers); 
} 
+1

メールが配信されない理由について、メールサーバーのログに何かが表示されていますか?あるいは、あなたはsuhosinのようなものを持っていて、それはフォームデータのURLフィルタリングをしていますか?また、自分のMIMEメールを作成しないでください。 PHPMailerやSwiftmailerを使用する方がはるかに簡単で、重い作業をさせることができます。 –

答えて

1

は、スパムフィルタのような音。ほとんどのSMTPサーバーはlocalhost URLを含むメールをフィルタリングすることが理にかなっています。

動作中のメッセージのヘッダーを確認してください。どのサーバが(Received行を通過したのか調べて、それらのサーバのシステム管理者に尋ねるか、それよりも優れている:すべてのテストメールをローカルに配信するようにメールサーバを設定し、サードパーティ経由で送信しない。そうすれば、あなたは環境を支配することができます。関係するすべてのメールサーバーを既に制御している場合は、ログファイルを確認してください。

+0

?なぜサーバは 'localhost' URLをフィルタリングしますか? – SLaks

+0

SLaks、なぜ誰かがローカルホストURLを電子メールで最初に送信するのですか? localhostへのリンクを使ってコンピュータ上で実行されているサービスの欠陥を悪用しようとしているワームを見ることができます。 –

+0

ウェブサイトのローカルコピーで一緒に作業する場合。しかし、私はあなたのポイントを見ます。 – SLaks

0

ローカルホストのURLをフォーム経由で送信できないようにする安全機能はありますか?

少なくともPHP内にはありません。メールサーバーの問題かもしれませんが、それはすべてのMTAで確認することです。

関連する問題