jjzjj

PHP 电子邮件 - 想要发送到不同的电子邮件

coder 2024-04-27 原文

目前:

我有下面的 PHP 表单,用户可以在其中选择一个复选框,然后会收到有关他们要预订的位置的通知。

目标:

我现在希望当有人点击 Canterbury 时,一封电子邮件被发送到 email1@gmail.com,什么时候发送到 Broadstairs - email2@gmail.com,什么时候交易 - email3@gmail.com

我一直在兜圈子试图做出改变,但我搞得一团糟。

仅供引用,我不介意将复选框更改为下拉列表,但我宁愿保持这种方式。

当前 PHP 部分:

<?php
ini_set('display_errors',0);
error_reporting(E_ALL);
$error = '';

if(isset($_POST['send']))
{
        $name = $_REQUEST['Name'];
        $telephone = $_REQUEST['Telephone'];
        $email = $_REQUEST['Email'];
        $message = $_REQUEST['Message'];
        $headers = "From: $email";
        $subject = "Web Contact Data";
        $selectedProjects  = 'None';
            if(isset($_POST['projects']) && is_array($_POST['projects']) && count($_POST['projects']) > 0){
                $selectedProjects = implode(', ', $_POST['projects']);
            }

        $fields = array();
        $fields["Name"] = $name;
        $fields["Telephone"] = $telephone;
        $fields["Email"] = $email;
        $fields["Message"] = $message;
        $fields["Location"] = $selectedProjects;

         $to = "email4@gmail.com" ; // change all the following to $_POST

        $body = "You have recieved the following information:\n\n";
        foreach($fields as $key => $value)
        {
            $body .= sprintf("%20s: %s\n",$key,$value);
        } // end foreach($fields as $key => $value)

        $subject2 = "Thank you for contacting us.";
        $autoreply = "<html><body><p>Dear " . $name . ",</p><p>Message goes here.</p></body></html>"; 
        $headers2  = 'MIME-Version: 1.0' . "\r\n";
        $headers2 .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
        $headers2 .= 'From: email4@gmail.com' . "\r\n";

        $send=false;
        if($name == '')
        {
            $error = "You did not enter your name, please try again.";
            selected_values();
        }
        $send=false;
        if($telephone == '')
        {
            $error = "You did not enter your telephone number, please try again.";
            selected_values();
        }
        elseif(!preg_match("/^[[:alnum:]][a-z0-9_.'+-]*@[a-z0-9-]+(\.[a-z0-9-]{2,})+$/", $email))
        {
            $error = "You did not enter a valid email address, please try again.";
            selected_values();
        }
        else
        {
            $send = mail($to, $subject, $body, $headers);
            $send2 = mail($email, $subject2, $autoreply, $headers2);

            if(!isset($error) && !$send)
            {
                $error = "We have encountered an error sending your mail, please notify [email]email4@gmail.com[/email].";
            }
            else
            {
                unset($_REQUEST['Name']);
                unset($_REQUEST['Email']);
                unset($_REQUEST['Telephone']);
                unset($_REQUEST['Message']);
            }
    } // end else
}// end of if(isset($_POST['send']))
?>

HTML 表单是这样的:

<form method="post" action="./lead.php">
<ul>
    <li>
        <?php
        if(isset($error))
            echo '<div class="register_error">'.$error.'</div>';
        if(isset($send) &&  $send== true){
            =echo '<div class="contact-send-green">Thank you for your message.</div>';
        }
        if(!isset($_POST['send']) || isset($error))
        ?>
    </li>
    <li>
        <input type="checkbox" name="projects[]" value="Broadstairs">
        <label for="type2">Broadstairs</label>
        <br /><br />
        <input type="checkbox" name="projects[]" value="Canterbury">
        <label for="type2">Canterbury</label>
        <br /><br />
        <input type="checkbox" name="projects[]" value="Deal">
        <label for="type2">Deal</label>
    </li>
    <li>
        <textarea name="Message" rows="5" cols="29"><?php if(isset($_REQUEST['Message'])) echo $_REQUEST['Message']; ?></textarea>
    </li>
    <li>
        <input type="submit" name="send" value="Send Message" id="send-email">
    </li>
</ul>

最佳答案

对于单选一个简单的switch(){}会做魔术。

switch($_POST['projects']){
   case "Broadstairs":
      $to = "email@email.com";
      break;
   case "Canterbury":
      $to = "email@email.com";
      break;
   case "Deal":
      $to = "email@email.com";
      break;
}

然后从输入名称中删除 [],因为您不需要它们是一个数组。 (因此:)

<input type="checkbox" name="projects" value="Broadstairs">

然后也许考虑使用一些 JS/jQuery 来检查一次是否只选择了 1 个?

关于PHP 电子邮件 - 想要发送到不同的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31872859/

有关PHP 电子邮件 - 想要发送到不同的电子邮件的更多相关文章

  1. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  2. java - 为什么 ruby​​ modulo 与 java/other lang 不同? - 2

    我基本上来自Java背景并且努力理解Ruby中的模运算。(5%3)(-5%3)(5%-3)(-5%-3)Java中的上述操作产生,2个-22个-2但在Ruby中,相同的表达式会产生21个-1-2.Ruby在逻辑上有多擅长这个?模块操作在Ruby中是如何实现的?如果将同一个操作定义为一个web服务,两个服务如何匹配逻辑。 最佳答案 在Java中,模运算的结果与被除数的符号相同。在Ruby中,它与除数的符号相同。remainder()在Ruby中与被除数的符号相同。您可能还想引用modulooperation.

  3. ruby-on-rails - 在 RSpec 中,如何以任意顺序期望具有不同参数的多条消息? - 2

    RSpec似乎按顺序匹配方法接收的消息。我不确定如何使以下代码工作:allow(a).toreceive(:f)expect(a).toreceive(:f).with(2)a.f(1)a.f(2)a.f(3)我问的原因是a.f的一些调用是由我的代码的上层控制的,所以我不能对这些方法调用添加期望。 最佳答案 RSpecspy是测试这种情况的一种方式。要监视一个方法,用allowstub,除了方法名称之外没有任何约束,调用该方法,然后expect确切的方法调用。例如:allow(a).toreceive(:f)a.f(2)a.f(1)

  4. ruby - 未定义的方法 auto_upgrade!将 Sinatra/DataMapper 应用程序推送到 Heroku 时 - 2

    有谁知道在Heroku的Bamboo堆栈上启动并运行使用DataMapper的Sinatra应用程序所需的魔法咒语?Bamboo堆栈不包含任何预安装的系统gem,无论我尝试使用何种gem组合,我都会不断收到此错误:undefinedmethod`auto_upgrade!'forDataMapper:Module(NoMethodError)这是我的.gems文件中的内容:sinatrapgdatamapperdo_postgresdm-postgres-adapter这些是我将应用程序推送到Heroku时安装的依赖项:----->Herokureceivingpush----->Si

  5. ruby-on-rails - 如何用不同的用户运行nginx主进程 - 2

    A/ctohttp://wiki.nginx.org/CoreModule#usermaster进程曾经以root用户运行,是否可以以不同的用户运行nginxmaster进程? 最佳答案 只需以非root身份运行init脚本(即/etc/init.d/nginxstart),就可以用不同的用户运行nginxmaster进程。如果这真的是你想要做的,你将需要确保日志和pid目录(通常是/var/log/nginx&/var/run/nginx.pid)对该用户是可写的,并且您所有的listen调用都是针对大于1024的端口(因为绑定(

  6. ruby - 从 sinatra 中的 before do block 返回不同的值 - 2

    有没有办法在sinatra的beforedoblock中停止执行并返回不同的值?beforedo#codeishere#Iwouldliketo'return"Message"'#Iwouldlike"/home"tonotgetcalled.end//restofthecodeget'/home'doend 最佳答案 beforedohalt401,{'Content-Type'=>'text/plain'},'Message!'end如果你愿意,你可以只指定状态,这里有状态、标题和正文的例子

  7. ruby-on-rails - Sunspot:如何对具有不同值的多个字段进行全文查询? - 2

    我想用sunspot重现以下原始solr查询q=exact_term_text:fooORterm_textv:foo*ORalternate_text:bar*但我无法通过标准的太阳黑子界面理解这是否可能以及如何实现,因为看起来:fulltext方法似乎不接受多个文本/搜索字段参数我不知道将什么参数作为第一个参数传递给fulltext,就好像我通过了"foo"或"bar"结果不匹配如果我传递一个空参数,我得到一个q=*:*范围过滤器(例如with(:term).starting_with('foo*')(顾名思义)作为过滤器查询应用,因此不参与评分。似乎可以手动编写字符串(或者可能使

  8. ruby-on-rails - 验证电子邮件地址是 Paypal 用户 - 2

    我想验证一个电子邮件地址是否是PayPal用户。是否有API调用来执行此操作?是否有执行此操作的ruby​​库?谢谢 最佳答案 GetVerifiedStatus来自PayPal'sAdaptiveAccounts平台会为您做这件事。PayPal没有任何codesamples或SDKs用于Ruby中的自适应帐户,但我确实找到了编写codeforGetVerifiedStatusinRuby的人.您需要更改该代码以检查他们拥有的帐户类型的唯一更改是更改if@xml['accountStatus']!=nilaccount_status

  9. ruby-on-rails - Ruby on Rails - 需要在每周的特定时间将消息发送到电子邮件 - 2

    我想知道我应该如何着手这个项目。我需要每周向人们发送一次电子邮件。但是,这必须在每周的特定时间自动生成并发送。编码有多难?我需要知道是否有任何书籍可以提供帮助,或者你们中的任何人是否可以指导我。它必须使用ruby​​onrails进行编程。因此有一个网络服务和数据库集成。干杯 最佳答案 为什么这么复杂?您只需安排工作。您可以使用Delayed::Job例如。Delayed::Job让您可以使用run_at符号在特定时间安排作业,如下所示:Delayed::Job.enqueue(SendEmailJob.new(...),:run_

  10. ruby - 拆分字符串并分配给不同的变量 - 2

    我从ui中得到日期范围为-approved_between"=>"2013-03-17-2013-03-18"我需要拆分此approved_start_date="2013-03-17"和approved_end_date="2013-03-18"...我希望使用它在mysql中查询,因为mysql中的日期格式是created_at:2012-07-2810:35:01.我正在做的是:approved=approved_between.split("")approved_start_date=approved[0]approved_end_date=approved[2]很确定这不是处

随机推荐