我可以从表单发送数据并使用PHP选择下拉到电子邮件吗?

时间:2018-02-13 11:23:39

标签: php html

我目前正在构建一个表单,其中访问者输入他们的信息并提交它,然后通过下拉菜单向他们选择的部门发送电子邮件,只是想看看这是否真的可行,如果是这样我如何继续IF语句,我的代码也有什么问题,当涉及到html / php时,我不是专业人士。

    <input type="text" name="full_name" placeholder="*Enter Name">

    <input type="email" name="email" placeholder="*Enter Email">

    <input type="text" name="company"  placeholder="*Enter Company">
    <br>

    <select id="Visiting">
     <option>Select Department to email</option>
      <option name="Visiting1" value="event1">Operations</option>
      <option name="Visiting2" value="event2">Security</option>
      <option name="Visiting3" value="event3">Shunters</option>  
      <option name="Visiting4" value="event2">Stock & Systems</option>
      <option name="Visiting5" value="event3">Goods In</option>  
      <option name="Visiting6" value="event3">Facilities</option>
      <option name="Visiting7" value="event3">IT</option>
      <option name="Visiting8" value="event3">Despacth</option>
      <option name="Visiting9" value="event3">Transport</option>
    </select>

    <br>
    <br>
    <br>

    <button type="submit">Sign In</button>

<?php
$name = $_POST['full_name'];
$email = $_POST['email'];
$company = $_POST['company'];
$visitor = $_POST['visitor'];

if($visitor == "security"){
    $mail_to = 'your security email';    
}elseif
  ($visitor == "it"){
    $mail_to = 'your it email';    
}else
  ($visitor == "Transport"){
$mail_to = 'your transport email';




$body_message = 'From: '.$name."\n";
$body_message .= 'E-mail: '.$email."\n";
$body_message .= 'Message: '.$company;
$body_message .= 'Message: '.$visitor;

$headers = 'From: '.$email."\r\n";
$headers .= 'Reply-To: '.$email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
<script language="javascript" type="text/javascript">
    alert('Thank you for notifying us, we will be with you shortly.');
    window.location = 'http://nameofwebsite.co.uk';
</script>
<?php
}
else { ?>
<script language="javascript" type="text/javascript">
    alert('Message failed. Please, try again or select another department');
    window.location = <'http://nameofwebsite.co.uk.>/';
</script>
<?php
}
?> 

2 个答案:

答案 0 :(得分:1)

您的HTML错误,您只能将名称属性添加到<select> - 标记,它不适用于<option> - 代码。

您的HTML代码应如下所示:

<select id="Visiting" name="Visiting">
    <option disabled selected>Select Department to email</option>
    <option value="Visiting1">Operations</option>
    <option value="Visiting2">Security</option>
    <option value="Visiting3">Shunters</option>  
    <option value="Visiting4">Stock & Systems</option>
    <option value="Visiting5">Goods In</option>  
    <option value="Visiting6">Facilities</option>
    <option value="Visiting7">IT</option>
    <option value="Visiting8">Despacth</option>
    <option value="Visiting9">Transport</option>
</select>

PHP:

$visitor = $_POST['Visiting'];
    switch ($visitor) {
        case 'Visiting1':
        $mail_to = 'your Visiting1email';
        break;
    case 'Visiting2':
        $mail_to = 'your Visiting2 email';
        break;
    case 'Visiting3':
        $mail_to = 'your Visiting3 email';
        break;
    ...
}

我希望这会有所帮助

答案 1 :(得分:0)

首先,如果您遇到错误,PHP函数mail()可能就是问题所在。您必须将PHP设置为实际发送电子邮件,如果没有一些配置,它通常不会开箱即用。

用于发送电子邮件的SMTP是一种非常古老的协议,并且在其原始形式中,它不需要用户名/密码(身份验证)来发送电子邮件。在荣誉系统上,你不会在&#34; From:&#34;中欺骗别人。字段。

显然情况已发生变化,接收电子邮件的服务器会验证原始服务器是否匹配&#34;来自:&#34;电子邮件中的字段,原始服务器本身要求输入用户名/密码以便能够首先发送电子邮件(并限制经过身份验证的用户自定义&#34;来自:&#34的能力;领域)。

话虽如此,您可以运行自己的SMTP服务器,但您可以根据自己的喜好进行不安全的操作,但其他在线电子邮件服务器不会非常认真地对待您,因为您看起来只是另一个垃圾邮件发送者在那里。相反,使用外部&#34;正确&#34;更可靠。通过网络托管公司或Gmail或雅虎等流行的网络邮件服务设置SMTP服务器。

在幕后,PHP的mail()函数使用名为sendmail的Linux命令行实用程序。您也可以使用其他库,如PEAR的邮件包。

很多人sendmail使用默认的本地SMTP服务器,并将该服务器设置为Gmail(或其他)外部服务器的中继。这样,脚本可以在没有用户名/密码的情况下发送电子邮件(中继负责)。显然这有一些安全隐患,但它可以是一种简单的方法。

如果您让我们更多地了解您要从哪个电子邮件服务器发送邮件,以及您运行的网站服务器类型,我可以指出您正确的配置邮件发送实用程序的方向。