2013-03-12 59 views
0

我在我的網站上向我發送電子郵件的方式有所不同。這些表單中的每一個都有自己的.php文件,所以我認爲如果我只有一個將文件發送給我的單個php文件是個好主意。如何讓變量發送不同的電子郵件?

我計劃這樣做的方式是在具有唯一ID的表單上隱藏輸入。該PHP拿起該ID和取決於什麼ID等於PHP將發送不同的電子郵件給我。

這裏是我正在使用的代碼:

<?php 
$to .= '[email protected]'; 

$feedback_page = "feedback.html"; 
$error_page = "error_message.html"; 
$thankyou_page = "thank_you.html"; 

$form_id = $_REQUEST['form_id'] ; /* This is what will determine the email message */ 

$first_name = $_REQUEST['first_name'] ; /*This is what picks up what the person wrote */ 
$last_name = $_REQUEST['last_name']; 
$email_adress = $_REQUEST['emai_address']; 

if (!isset($_REQUEST['email_address'])) { 
header("Location: $feedback_page"); 
} 

elseif (empty($email_adress)) { 
header("Location: $error_page"); 
} 

else { 
    $mailmsg = " 
    Name: $first_name $last_name 
    Email: $email_address 
    "; 

$headers .= 'From: [email protected]' . "\r\n"; 
$headers .= 'Bcc: [email protected]' . "\r\n"; 

mail("$to", $form_name , $mailmsg , $headers); 
header("Location: $thankyou_page"); 
} 
?> 

我可以添加到這個代碼,這將改變其發送取決於我提到的ID輸入電子郵件什麼?

當我輸入代碼時,我認爲這樣做的一種可能方式是設置不同的電子郵件,例如$ mailmsg1或$ mailmsg2,並在mail()中放入一些變量,以決定發送哪些郵件消息。感謝您提前的幫助。

回答

1

我會實現它與一個PHP switch聲明,相應地設置$mailmsg。像這樣(未經):

switch ($form_id) { 
    case "1": 
     $mailmsg="Something"; // Message 1 
     break; 
    case "2": 
     $mailmsg="Something else"; // Message 2 
     break; 
    default: 
     $mailmsg="Default message"; 
     break; 

此外,剛擡起頭,你可以在下面的請求一個錯字:

$email_adress = $_REQUEST['emai_address']; 
0

您可以進行的最基本的改變是將if..else放置在設置消息正文文本的部分,並測試$form_id對於您在隱藏的輸入元素中設置的表單ID。

我只在這裏包含的最後一部分:

// ... first part of the code ommited 
else 
{ 
    if($form_id === SOME_ID_1) 
    { 
     // set here the message for form id 1 

     $mailmsg = " 
      Name: $first_name $last_name 
      Email: $email_address 
     "; 
    }else if($form_id === SOME_ID_2) 
    { 
     // set here the message for form id 2 
     $mailmsg = " 
      ... WHATEVER MESSAGE YOU'D LIKE FOR FORM 2 
     "; 
    }else{ 
     // set here a default message if you want or redirect to error page 

    } 

    $headers .= 'From: [email protected]' . "\r\n"; 
    $headers .= 'Bcc: [email protected]' . "\r\n"; 

    mail("$to", $form_name , $mailmsg , $headers); 
    header("Location: $thankyou_page"); 
} 

但可能是一個好得多的抽象將實際移動,您使用的電子郵件發送到一個函數,只是調用所有的代碼根據不同的消息和或主題$form_id

0

可以使該選擇正確EMAILADDRESS到一個開關case語句發送到:

$mailMessage = ""; 
switch ($form_id) { 
    case 0: 
     $mailMessage += "Hello Son,"; 
     $mailMessage += "Goodbye"; 
     break; 
    case 1: 
     //Same here as above 
     break; 
    case 2: 
     //Same here as case 0 
     break; 
} 

mail("$to", $form_name , $mailMessage, $headers); 

祝你好運!

+0

我不確定你是否理解我的意思,但我需要改變的是發送的消息不是它發送的電子郵件,但我理解你提到的背後的想法,所以我會嘗試一下。 – elizur424 2013-03-12 16:01:47

0

只要發回相同的表單,驗證表單並在那裏生成消息就會更清晰。從這一點開始,您可以將消息發送到您決定使用的任何電子郵件處理腳本。

+0

我意識到這並不是回答你的確切問題,但它肯定是要走的路。 – skeelsave 2013-03-12 15:41:23