【问题标题】:Add email address to php $email_to variable将电子邮件地址添加到 php $email_to 变量
【发布时间】:2015-09-09 03:55:00
【问题描述】:

我有一个包含简单复选框列表的表单。我需要根据已选中的框通过电子邮件将表格发送给所有人。下面是我意识到的代码的基本逻辑位。

$email_to = 'david@gmail.com,'.'

    if ($_POST['services'] == 'Electrical'){
        echo ",roger@gmail.com";
    }

    if ($_POST['services'] == 'Plumbing'){
        echo ",bill@gmail.com";
    }

    if ($_POST['services'] == 'Painting'){
        echo ",donnie@gmail.com";
    }
.';

所以想法是,如果 services 复选框包含 Electrical,那么 email 变量将包含 $email_to = 'david@gmail.com,roger@gmail.com'

如果 services 复选框包含 Electrical AND Plumbing,那么 email 变量将包含 $email_to = 'david@gmail.com, roger@gmail.com, bill@gmail.com'

任何帮助将不胜感激。

这是我在收到您的建议后尝试实施的实际代码 - 但仍然不起作用 - 我尝试了所有三个建议?

<?php
error_reporting(-1);
ini_set('display_errors', 'On');
if(isset($_POST['email'])) {

$email_from = $_POST["email"];
$email_to = 'nettemple@gmail.com,{$email_from}';
    if($_POST['services'] == "Ecomtek"){ 
        $email_to .= ",sol@sungazer.com"; 
        }
    if($_POST['services'] == "E-Payroll"){ 
        $email_to .= ",sarah@nettemple.net"; 
        }
    if($_POST['services'] == "Humana"){ 
        $email_to .= ",dmeyers@scad.edu";
        }

$email_subject = "WEB INQUIRY";
$email_message = "Form details below.\n\n";

function clean_string($string) {
  $bad = array("content-type","bcc:","to:","cc:","href");
  return str_replace($bad,"",$string);
}

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

mail($email_to, $email_subject, $email_message, $headers); 

?>

这是表格....

<form name="htmlform" method="post" action="form_process2.php">

<input type="checkbox" name="services[]" value="Ecomtek" />&nbsp;Ecomtek<br />
<input type="checkbox" name="services[]" value="E-Payroll" />&nbsp;E-Payroll<br />
<input type="checkbox" name="services[]" value="Humana" />&nbsp;Humana<br />
<input type="checkbox" name="services[]" value="John Conti" />&nbsp;John Conti<br />
<input type="checkbox" name="services[]" value="Kentucky RX Card" />&nbsp;Kentucky RX Card<br />
<input type="checkbox" name="services[]" value="Lifelock" />&nbsp;Lifelock<br />
<input type="checkbox" name="services[]" value="Logans" />&nbsp;Logan's<br />
<input type="checkbox" name="services[]" value="Norton Healthcare" />&nbsp;Norton Healthcare<br />
<input type="checkbox" name="services[]" value="Office Depot" />&nbsp;Office Depot<br />
<input type="checkbox" name="services[]" value="ProWaste" />&nbsp;ProWaste<br />
<input type="checkbox" name="services[]" value="Thorntons" />&nbsp;Thorntons<br />


  <label for="firstname">*FirstName</label>
  <input  type="text" name="firstname" maxlength="150" size="50" class="formbox">

  <label for="lastname">*Last Name</label>
  <input  type="text" name="lastname" maxlength="150" size="50" class="formbox">

  <label for="company">*Company</label>
  <input  type="text" name="company" maxlength="150" size="50" class="form box">

  <label for="email">*Email Address</label>
  <input  type="text" name="email" maxlength="180" size="50" class="form box">

</form>

【问题讨论】:

  • 试试这个 $email_to = 'david@gmail.com';
  • 您正在对邮件 ID 进行回显,而不是附加第二个邮件 ID。
  • $_POST['services'] 的来源问题以及它如何“包括电气和管道”,它是文本输入\复选框吗?

标签: php forms email


【解决方案1】:

$_POST['services'] 是一个数组,所以:

$email_to = 'david@gmail.com';

    if (in_array('Electrical',$_POST['services'])){
        $email_to .= ",roger@gmail.com";
    }

    if (in_array('Plumbing',$_POST['services'])){
        $email_to .= ",bill@gmail.com";
    }

    if (in_array('Painting',$_POST['services'])){
        $email_to .= ",donnie@gmail.com";
    }

.= 将第二个地址附加到第一个

【讨论】:

  • 我已经尝试了所有建议,但没有任何工作。所以我在底部发布了实际的代码和电子邮件,以便清楚地说明......
  • @NetTemple 我不清楚 $_POST['services'] 是什么,你添加了 var_dump($_POST) 并向我们展示了有用的输出
  • 我添加了上面的表格 - 这有帮助吗?
  • 已更新。既然我知道你的东东,我可能会用另一种方式做,但这仍然有效。
  • 我在每个“if”行的开头都收到红色错误指示...?这可能表明它为什么不起作用?
【解决方案2】:

添加isset($_POST['services'])在使用前验证变量,附加字符串可以使用.=

$email_to = 'david@gmail.com';
if(isset($_POST['services']){
    if ($_POST['services'] == 'Electrical'){
        $email_to .= ",roger@gmail.com";
    }
    if($_POST['services'] == 'Plumbing'{
        $email_to .= ",bill@gmail.com";
    }
    if($_POST['services'] == 'Painting'){
        $email_to .= ",donnie@gmail.com";
    }
}

【讨论】:

  • 使用 (isset($_POST['services']) 3次后,可以使用一次,然后可以检查变量的值
【解决方案3】:

您可以为此使用数组。

$emails = array();

if($_POST['services'] == 'Plumbing') {
    $emails[] = 'user@gmail.com';
}

if($_POST['services'] == 'Painting') {
    $emails[] = 'user@gmail.com';
}

当要发送电子邮件时,我会迭代数组。

foreach( $emails as $email )
    mail($email, 'Subject', ....);

【讨论】:

  • 你最好解释一下如何使用 $emails 数组 - 即 implode()
  • 我可以,但我更喜欢遍历数组。不确定性能问题,但有几封电子邮件,没什么大不了的。添加了实现。
  • 你的船有什么。
【解决方案4】:
$email_to = 'david@gmail.com';

    if (in_array('Electrical',$_POST['services'])){
        $email_to .= ",roger@gmail.com";
    }

    if (in_array('Plumbing',$_POST['services'])){
        $email_to .= ",bill@gmail.com";
    }

    if (in_array('Painting',$_POST['services'])){
        $email_to .= ",donnie@gmail.com";
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 2018-05-08
    • 1970-01-01
    相关资源
    最近更新 更多