2012-02-09 26 views
0

私は以下のコードを手に入れました。送信する前に、フィールドに入力されたかどうかをチェックします。メールを送信すると、私たちは「私たちはあなたのメールを受け取りました。しかし私は私の受信箱の電子メールを見ることができない、2つの異なった電子メールでそれを試みたが同じ結果...なぜ私を助けることができるか理解できない。ここでのコードは次のとおりです。PHPでメールを送信

if($badinput == NULL){ ?> 
    <h2>We have received your email .</h2> 
    </div> 
    <?php 

    require_once("libs/inc.email_form.php"); 

    $email_fields = array(
     "Name"    => $_POST['name'], 
     "E-Mail Address"  => $_POST['email'], 
     "Telephone Number"  => $_POST['telephone'], 
     "Callback"   => $_POST['callback'], 
     "Enquiry"   => $_POST['enquiry'] 
    ); 

    contact_form("[email protected]", $_POST['email'], " Enquiry", "test", $email_fields); 
} 
else 
{ 
    echo $badinput . "</div>"; 
} 
?> 
ここ

はLIBS/inc.email_form.php関数です:

function contact_form($to, $from, $subject, $message, $fields){ 
    if(!$to || !$from || !$subject || !$message || !$fields){ 
     print form function is missing a variable"; 
     return false; 
    } 

    $msg_body = $message."\n\nSubmitted ".date("l, F j, Y, g:i a")." [EST]\n\nSUBMISSION DETAILS:\n"; 

    // clean up all the variables 
    foreach($fields as $k => $v){ 
     $msg_body .= "\n".$k.": ".clean_var($v); 
    } 

    // add additional info 
    $referer = (isset($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : "could not determine" ; 
    $user_agent = (isset($_SERVER['HTTP_USER_AGENT'])) ? $_SERVER['HTTP_USER_AGENT'] : "could not determine" ; 
    $msg_body .= "\n\nAdditional Info:\nIP = ".$_SERVER['REMOTE_ADDR']."Browser Info: ".$user_agent."Referral: ".$referer." \r"; 

    // send it 
    $emailer = new emailer; 
    if(is_array($to)){ 
     foreach($to as $t){ 
      $emailer->send_email($from, $subject, $msg_body, $to); 
     } 
    }else{ 
     $emailer->send_email($from, $subject, $msg_body, $to); 
    } 

    return true; 
} 
+0

私は他のウェブサイトから – Zaki

答えて

2

それだけでおそらくまだ標準のPHPのメールを使っている場合、私はクラスを使用しない理由を見ません() 関数。

メールが実際に送信されますかどうかをテストするためにこのコードを使用してみてください。また)など、多くの電子メールは(PHPメール経由で送信する迷惑メールフォルダを確認してくださいによる不正または不完全なヘッダにスパムとしてフラグが付けられます

if (mail('[email protected]', 'subject', 'test email')) 
    echo 'Mail was sent'; 
else 
    echo 'Mail could not be sent'; 

か悪用や悪いIPの評判のために(特にあなたが共有ホスティングを使用している場合)。

+0

[OK]を私はこれでそれを試してみましたが、私は私のオリジナル機能を備えた電子メールではなく、を得る送るようはい私は、実行します。$件名を= "テスト"; \t $ message = "mesage"; \t $ headers。= '送信元:テスト'。 "\ r \ n"; \t \t mail( "myemailaddress"、$件名、$メッセージ、$ヘッダー); \t \t echo( "email sent"); – Zaki

1

$ emailerクラスからの戻り値を実際にチェックしているようではないので、電子メールを送信する関数は実際には偽陽性です。

$emailer->send_email($from, $subject, $msg_body, $to); 

に:

$result = $emailer->send_email($from, $subject, $msg_body, $to); 
print_r($result); 

をし、$ Emailerのクラスが返却されている情報を確認し

私は変化するであろう。失敗した場合は「0」、成功する場合は「1」になります。

+0

私はこれを試して、私は1を得る...しかし、まだメールは私もジャンクメールを確認した – Zaki

+0

@ Sam1あなたが見ることができるようにダウンロードするためにあなたのスクリプト/ emailerスクリプトのzipアーカイブを投稿することができますか? – vero

0

これはスクリプトの100%正確な表現ですか?

何らかの形でエラーが出ない場合は、スクリプトの機能を少なくとも完全に変更する大きな構文エラーがあるようです。

if(!$to || !$from || !$subject || !$message || !$fields){ 
    print form function is missing a variable"; 

確かに、それは次のようになります。

if(!$to || !$from || !$subject || !$message || !$fields){ 
    print "form function is missing a variable";