2013-03-12 62 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