簡體   English   中英

如何將“發件人”電子郵件地址添加到PHP表單?

[英]How can I add a From e-mail address to a PHP form?

我的電子郵件處理器正在工作...但是如何顯示“發件人”電子郵件地址而不是“ myhost”? 我正在獲取匿名@ q0.xxxxxxxxxxxxx.com。 因此,當有人填寫表格時,我希望他的電子郵件成為回復地址。

<?php
if(!$_POST) exit;

$email = $_POST['email'];

//$error[] = preg_match('/\b[A-Z0-9._%-]+@[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 = "myemail@somehost";
    $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!';
}
}
?>

將此添加到您的文件:

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

然后,當您調用mail命令時,請使用以下命令:

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

默認情況下,PHP [mail()函數]發送的電子郵件用作服務器的發件人。 要更改發件人,必須修改電子郵件的標題。 您可以這樣操作:

$emailHeader = "From: theSender@yourdomain.com" . "\r\n" . "Reply-To: theSender@yourdomain.com" . "\r\n";
// add the header argument to mail function
mail($your_email,$email_subject,$email_content,$emailHeader);

請注意,我們在mail函數中添加了第四個參數。

好吧...我要說的是剝去整個$values = array....行並替換為

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

將所有您的POST數據添加到$ values數組中,您的內容生成器應如下所示

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
}

希望我正確回答你的問題

嘿。 順便說一句:從我在這里看到的

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

沒有道理。 您的鍵始終為:0到count($ values)...您沒有關聯數組。 還是這個$values數組僅用於測試目的?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM