将数据发送到电子邮件并发送确认电子邮件的表单

问题描述:

我已经找遍解决了我的问题,但似乎无法使其工作。将数据发送到电子邮件并发送确认电子邮件的表单

我有一个从用户获取数据的表单,然后当他们单击提交时通过电子邮件发送给我。

我还希望他们收到他们提供的地址的确认电子邮件,这是我卡住的地方。

如果需要的形式,请询问,我会送,但这里是PHP ...

<?php 
if(isset($_POST['email'])) { 

// EDIT THE 2 LINES BELOW AS REQUIRED 
$email_to = "[email protected]"; 
$email_subject = "CompuMod Web-site Order"; 

function died($error) { 

// your error code can go here 
echo "Something was entered incorrectly…"; 
echo "Please correct the following.<br /><br />"; 
echo $error."<br /><br />"; 
echo "After correcting, please try again.<br /><br />"; 
die(); 
} 

// validation expected data exists 
if(
!isset($_POST['site']) || 
!isset($_POST['page']) || 
!isset($_POST['domain']) || 
!isset($_POST['host']) || 
!isset($_POST['service']) || 
!isset($_POST['firstname']) || 
!isset($_POST['lastname']) || 
!isset($_POST['company']) || 
!isset($_POST['email']) || 
!isset($_POST['telephone']) || 
!isset($_POST['idnumber']) || 
!isset($_POST['address']) || 
!isset($_POST['suburb']) || 
!isset($_POST['city']) || 
!isset($_POST['province']) || 
!isset($_POST['postcode']) || 
!isset($_POST['comments'])) { 
died('Something was entered incorrectly…'); 
} 

$site = $_POST['site']; // required 
$page = $_POST['page']; // required 
$domain = $_POST['domain']; // required 
$host = $_POST['host']; // required 
$service = $_POST['service']; // required 
$firstname = $_POST['firstname']; // required 
$lastname = $_POST['lastname']; // required 
$company = $_POST['company']; // not required 
$email = $_POST['email']; // required 
$telephone = $_POST['telephone']; // required 
$idnumber = $_POST['idnumber']; // required 
$address = $_POST['address']; // required 
$suburb = $_POST['suburb']; // not required 
$city = $_POST['city']; // required 
$province = $_POST['province']; // required 
$postcode = $_POST['postcode']; // required 
$comments = $_POST['comments']; // not required 

$error_message = ""; 
$string_exp = "/^[0-9]+$/"; 
if(!preg_match($string_exp,$site)) { 
$error_message .= 'Your “Base Site Design” was not Selected.<br />'; 
} 
$string_exp = "/^[0-9]+$/"; 
if(!preg_match($string_exp,$page)) { 
$error_message .= 'Your “Extra Pages” was not Selected.<br />'; 
} 
$string_exp = "/^[0-9]+$/"; 
if(!preg_match($string_exp,$domain)) { 
$error_message .= 'Your “Domain Registration” was not Selected.<br />'; 
} 
$string_exp = "/^[0-9]+$/"; 
if(!preg_match($string_exp,$host)) { 
$error_message .= 'Your “Host Server Size” was not Selected.<br />'; 
} 
$string_exp = "/^[0-9]+$/"; 
if(!preg_match($string_exp,$service)) { 
$error_message .= 'Your “Service Package” was not Selected.<br />'; 
} 
$string_exp = "/^[A-Za-z .'-]+$/"; 
if(!preg_match($string_exp,$firstname)) { 
$error_message .= 'Your “First Name” was not entered or entered incorrectly.<br />'; 
} 
if(!preg_match($string_exp,$lastname)) { 
$error_message .= 'Your “Last Name” was not entered or entered incorrectly.<br />'; 
} 
$email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 
if(!preg_match($email_exp,$email)) { 
$error_message .= 'Your “E-Mail” was not entered or entered incorrectly.<br />'; 
} 
$string_exp = "/^[0-9]+$/"; 
if(!preg_match($string_exp,$telephone)) { 
$error_message .= 'Your “Phone/Cell” was not entered or entered incorrectly.<br />'; 
} 
$string_exp = "/^[0-9]+$/"; 
if(!preg_match($string_exp,$idnumber)) { 
$error_message .= 'Your “SA ID Number” was not entered or entered incorrectly.<br />'; 
} 
$string_exp = "/^[A-Za-z0-9 .'-]+$/"; 
if(!preg_match($string_exp,$address)) { 
$error_message .= 'Your “Street Address” was not entered or entered incorrectly.<br />'; 
} 
$string_exp = "/^[A-Za-z .'-]+$/"; 
if(!preg_match($string_exp,$city)) { 
$error_message .= 'Your “City” was not entered or entered incorrectly.<br />'; 
} 
$string_exp = "/^[A-Za-z .'-]+$/"; 
if(!preg_match($string_exp,$province)) { 
$error_message .= 'Your “Povince” was not entered or entered incorrectly.<br/>'; 
} 
$string_exp = "/^[0-9]+$/"; 
if(!preg_match($string_exp,$postcode)) { 
$error_message .= 'Your “Postal Code” was not entered or entered incorrectly.<br />'; 
} 

if(strlen($error_message) > 0) { 
died($error_message); 
} 
$email_message = "Client request details below.\n\n"; 
function clean_string($string) { 
$bad = array("content-type","bcc:","to:","cc:","href"); 
return str_replace($bad,"",$string); 
} 

//request email variables 
$email_message .= "Base Site Design: - ".clean_string($site)."\n"; 
$email_message .= "Extra Pages: - ".clean_string($page)."\n"; 
$email_message .= "Domain Registration: - ".clean_string($domain)."\n"; 
$email_message .= "Host Server Size: - ".clean_string($host)."\n"; 
$email_message .= "Service Package: - ".clean_string($service)."\n"; 
$email_message .= "First Name: - ".clean_string($firstname)."\n"; 
$email_message .= "Last Name: - ".clean_string($lastname)."\n"; 
$email_message .= "Company: - ".clean_string($company)."\n"; 
$email_message .= "E-Mail: - ".clean_string($email)."\n"; 
$email_message .= "Phone/Cell: - ".clean_string($telephone)."\n"; 
$email_message .= "SA ID Number: - ".clean_string($idnumber)."\n"; 
$email_message .= "Address: - ".clean_string($address)."\n"; 
$email_message .= "Suburb: - ".clean_string($suburb)."\n"; 
$email_message .= "City: - ".clean_string($city)."\n"; 
$email_message .= "Province: - ".clean_string($province)."\n"; 
$email_message .= "Postal Code: - ".clean_string($postcode)."\n"; 
$email_message .= "Extra Requests: - ".clean_string($comments)."\n"; 

$headers = 'From: '.$email_from."\r\n". 
      'Reply-To: '.$email_from."\r\n" . 
      'X-Mailer: PHP/' . phpversion(); 
@mail($email_to, $email_subject, $email_message, $headers); 

//conformation email variables 
$subject = "Welcome & Thanks!"; 
$email_message = "Thank you ".clean_string($firstname)." ".clean_string($lastname)." for your request\n\n"; 
$email_message .= "A Compumod representative will contact you as soon as posable.\n"; 

$headers = 'From: '.$email_from."\r\n". 
      'Reply-To: '.$email."\r\n" . 
      'X-Mailer: PHP/' . phpversion(); 
@mail($email, $subject, $email_message, $headers); 

header('Location: http://www.compumodsa.com/index.php/component/k2/item/21'); 

?> 
<!-- include your own success html here --> 
<?php 
} 
?> 

的形式获取详细信息通过电子邮件发送给我...

//request email variables 
$email_message .= "Base Site Design: - ".clean_string($site)."\n"; 
$email_message .= "Extra Pages: - ".clean_string($page)."\n"; 
$email_message .= "Domain Registration: - ".clean_string($domain)."\n"; 
$email_message .= "Host Server Size: - ".clean_string($host)."\n"; 
$email_message .= "Service Package: - ".clean_string($service)."\n"; 
$email_message .= "First Name: - ".clean_string($firstname)."\n"; 
$email_message .= "Last Name: - ".clean_string($lastname)."\n"; 
$email_message .= "Company: - ".clean_string($company)."\n"; 
$email_message .= "E-Mail: - ".clean_string($email)."\n"; 
$email_message .= "Phone/Cell: - ".clean_string($telephone)."\n"; 
$email_message .= "SA ID Number: - ".clean_string($idnumber)."\n"; 
$email_message .= "Address: - ".clean_string($address)."\n"; 
$email_message .= "Suburb: - ".clean_string($suburb)."\n"; 
$email_message .= "City: - ".clean_string($city)."\n"; 
$email_message .= "Province: - ".clean_string($province)."\n"; 
$email_message .= "Postal Code: - ".clean_string($postcode)."\n"; 
$email_message .= "Extra Requests: - ".clean_string($comments)."\n"; 

$headers = 'From: '.$email_from."\r\n". 
      'Reply-To: '.$email_from."\r\n" . 
      'X-Mailer: PHP/' . phpversion(); 
@mail($email_to, $email_subject, $email_message, $headers); 

的构想电子邮件女巫是假设去用户...

//conformation email variables 
$subject = "Welcome & Thanks!"; 
$email_message = "Thank you ".clean_string($firstname)." ".clean_string($lastname)." for your request\n\n"; 
$email_message .= "A Compumod representative will contact you as soon as posable.\n"; 

$headers = 'From: '.$email_from."\r\n". 
      'Reply-To: '.$email."\r\n" . 
      'X-Mailer: PHP/' . phpversion(); 
@mail($email, $subject, $email_message, $headers); 

用户没有收到电子邮件。

所有的帮助,将这么多的赞赏......

+0

如果有什么在那里请让我知道不必要的。 –

+1

什么似乎是问题?它工作吗?它是否寄出或没有?有没有任何错误,你在检查他们?如果表单不使用POST方法并且输入未命名,那可能会使您的代码停止。 –

+0

开头的所有'if(isset())'部分都可以通过在HTML表单中放置一个“required”来替换。 – Twinfriends

不知道你正在尝试做的,但是这很可能是您的问题在于......

if($_POST['email'] == "post") 
{ 
    //email variables 
    $subject = "Indie Rally - Welcome & Thanks!"; 
    $email_message = "Thank you ".clean_string($firstname)." ".clean_string($lastname)."for your request\n\n"; 
    $email_message .= "A Compumod representative will contact you as soon as posable.\n"; 

    // create email headers 
    $headers = 'From: [email protected]' . "\r\n" . 
       'Reply-To: $email' . "\r\n" . 
       'X-Mailer: PHP/' . phpversion(); 

    mail($email, $subject, $email_message, $headers); 

} 

假设$_POST['email']是填写表格的人的电子邮件地址,如果它等于明显无效的电子邮件地址“post”可能是A)总是会失败条件支票或B)通过有条件支票并通过无效的“要:“地址到PHP邮件功能。

由于您之前已经执行过测试以确保电子邮件地址既存在也有效,因此您不应该要求有关自动回复功能的条件。只需发送电子邮件。

这将离开你这个...

/* 
* Notice the removal of the `if()` statement 
*/ 
//email variables 
$subject = "Indie Rally - Welcome & Thanks!"; 
$email_message = "Thank you ".clean_string($firstname)." ".clean_string($lastname)."for your request\n\n"; 
$email_message .= "A Compumod representative will contact you as soon as posable.\n"; 

// create email headers 
$headers = 'From: [email protected]' . "\r\n" . 
      'Reply-To: $email' . "\r\n" . 
      'X-Mailer: PHP/' . phpversion(); 

mail($email, $subject, $email_message, $headers); 
+0

对不起,听起来像一个总noob(女巫我在这)。如您所述,代码存在问题。你能帮我纠正一下吗? –

+0

@ C-GuL我试图澄清我在说什么。看看答案的底部。 –

+0

我编辑了我的问题上的最后一个代码框。仍然没有邮件发送给用户。如果我替换@mail($ email);用$ email_to发送到webhost地址。现在看来,它似乎没有从输入中获取邮件地址。 –