我目前正在构建一个表单,其中访问者输入他们的信息并提交它,然后通过下拉菜单向他们选择的部门发送电子邮件,只是想看看这是否真的可行,如果是这样我如何继续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
}
?>
答案 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(或其他)外部服务器的中继。这样,脚本可以在没有用户名/密码的情况下发送电子邮件(中继负责)。显然这有一些安全隐患,但它可以是一种简单的方法。
如果您让我们更多地了解您要从哪个电子邮件服务器发送邮件,以及您运行的网站服务器类型,我可以指出您正确的配置邮件发送实用程序的方向。