2011-02-07 11 views
0

私の電子メールプロセッサは動作しています...しかし、 "myhost"の代わりにFrom電子メールアドレスが表示されるようにするにはどうすればよいですか?私は[email protected]を取得しています。だから、誰かがフォームに記入すると、彼の電子メールを返信アドレスにしたい。From電子メールアドレスをPHPフォームに追加するにはどうすればよいですか?

<?php 
if(!$_POST) exit; 

$email = $_POST['email']; 

//$error[] = preg_match('/\b[A-Z0-9._%-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS'; 
if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email)){ 
    $error.="Invalid email address entered"; 
    $errors=1; 
} 
if($errors==1) echo $error; 
else{ 
    $values = array ('name','email','telephone','company','message'); 
    $required = array('name','email','telephone','message'); 

    $your_email = "[email protected]"; 
    $email_subject = "New Message: ".$_POST['subject']; 
    $email_content = "new message:\n"; 

    foreach($values as $key => $value){ 
     if(in_array($value,$required)){ 
      if ($key != 'subject' && $key != 'company') { if(empty($_POST[$value])) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; } 
     } 
     $email_content .= $value.': '.$_POST[$value]."\n"; 
    } 
} 

if(@mail($your_email,$email_subject,$email_content)) { 
    echo 'Message sent!'; 
} else { 
    echo 'ERROR!'; 
} 
} 
?> 
+0

を持って、その減価償却。 –

答えて

1

あなたのファイルにこれを追加します。

$headers = 'From: ' . $your_email . "\r\n" . 
'Reply-To: ' . $your_email . "\r\n" . 
'X-Mailer: PHP/' . phpversion(); 

次にあなたがこのメールコマンドの使用を呼び出すとき:

mail($your_email,$email_subject,$email_content,$headers); 
+0

$ values = array( 'name'、 'email'、 'telephone'、 'company'、 'message')に要素を追加すると、 - 受信時にメールに表示されません。どのように表示させるのですか? $ required = array( 'name'、 'email'、 'telephone'、 'message');彼らは働く...しかし、彼らは送信する前に必要です...任意のアイデア??? – sean

0

ねえ。ちょうどいいところ:私がここに見るものから、

 if ($key != 'subject' && $key != 'company') { if(empty($_POST[$value])) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; } 

は意味がありません。 あなたのキーの値は常に0になります($値)...あなたには連想配列はありません。テスト目的のためには$valuesアレイですか?

+0

私はフォームが働いています。私は余分なフィールドを追加することができません - 必要がない限り - 修正は何ですか?私はすべての欄を必須にすることはできませんが、どうすればこれを変更できますか? – sean

1

デフォルトでは、PHP [mail()関数]によって送信された電子メールは、あなたのサーバーの送信者として使用されます。 送信者を変更するには、メールのヘッダーを変更する必要があります。 あなたはそれをこのように行うことができます。

$emailHeader = "From: [email protected]" . "\r\n" . "Reply-To: [email protected]" . "\r\n"; 
// add the header argument to mail function 
mail($your_email,$email_subject,$email_content,$emailHeader); 

注我々はメール機能の4番目の引数を追加しました。

1

大丈夫...私はストリップに全体$values = array....ラインを言うと置き換えると思います$ values配列 へのにすべてのあなたのPOSTデータを追加し、コンテンツ・ジェネレータは、この

のようになります。

$values = array(); 
foreach($_POST as $k => $v) if(strtolower($k) != 'submit') $values[$k] = htmlspecialchars($v); 

であります

foreach($values as $key => $value){ 
    if(in_array($key,$required) && trim($value)==''){ 
     echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; 
    } 
    $email_content .= $key.': '.$value."\n"; // makes more sense 
} 

希望私はEREGを使用していない、あなたの質問右のオブジェクト指向

関連する問題