Php 如何创建变量以发送不同的电子邮件?

Php 如何创建变量以发送不同的电子邮件?,php,Php,我的网站上有不同的表格可以给我发送电子邮件。每个表单都有自己独立的.php文件,所以我想如果我只有一个php文件向我发送电子邮件,那将是一个好主意 我计划这样做的方式是在我的表单上有一个唯一id的隐藏输入。php会选择该id,并根据id等于多少,php会向我发送不同的电子邮件 以下是我正在使用的代码: <?php $to .= 'myemailadress@mydomain.com'; $feedback_page = "feedback.html"; $error_page = "er

我的网站上有不同的表格可以给我发送电子邮件。每个表单都有自己独立的.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()的内部放入一些变量来确定发送的邮件消息。提前感谢您的帮助。

您可以做的最基本的更改是在设置消息正文文本的部分中放置一个
if..else
,并测试
$form\u 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\u id

使用不同的消息和/或主题调用该函数。我将使用一个PHP
switch
语句来实现它,该语句相应地设置
$mailmsg
。类似这样(未经测试):

此外,仅需一个提示,您可能会在以下请求中输入错误:

$email_adress = $_REQUEST['emai_address'];

您可以制作一个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 );

祝你好运

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

我知道这并没有回答您的确切问题,但这肯定是正确的做法。我不确定您是否理解我的意思,但我需要更改的是发送的邮件,而不是发送的电子邮件,但我理解你提到的想法,所以我会试试看。
$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 );