0

我的网站上有不同的表格可以向我发送电子邮件。这些表单中的每一个都有自己单独的 .php 文件,所以我认为如果我只有一个 php 文件将电子邮件发送给我,那将是一个好主意。

我计划这样做的方式是在我的表单上隐藏具有唯一 ID 的输入。php 获取该 id 并根据 id 等于什么,php 将向我发送不同的电子邮件。

这是我正在使用的代码:

<?php
$to .= 'myemailadress@mydomain.com';

$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: forms@mydomain.com' . "\r\n";
$headers .= 'Bcc: otheremail@mydomain.com' . "\r\n";

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

我可以添加什么到此代码中,以根据我提到的 ID 输入更改它发送的电子邮件?

当我输入代码时,我认为一种可能的方法是设置不同的电子邮件消息,如 $mailmsg1 或 $mailmsg2 并在 mail() 内部放入一些变量来确定发送的邮件消息。提前感谢您的帮助。

4

4 回答 4

1

我将使用相应switch设置的 PHP 语句来实现它$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'];
于 2013-03-12T15:39:11.740 回答
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: forms@mydomain.com' . "\r\n";
   $headers .= 'Bcc: otheremail@mydomain.com' . "\r\n";

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

但可能更好的抽象是将用于发送电子邮件的所有代码实际移动到一个函数中,并根据不同的消息和/或主题调用它$form_id

于 2013-03-12T15:37:30.917 回答
0

您可以创建一个 switch 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 );

祝你好运!

于 2013-03-12T15:39:41.170 回答
0

只发回您的同一个表单,验证表单并在那里生成消息会更干净。从那时起,您可以将消息发送到您决定使用的任何电子邮件处理脚本。

于 2013-03-12T15:40:27.347 回答