我似乎无法通过表单向我的电子邮件发送消息。是否可能是由于服务器?这是我的代码:
<?php
$action=$_REQUEST['action'];
if ($action=="") /* display the contact form */
{
?>
<form id="contact-form" action:"" method="post" enctype="multipart/form-data">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input type="hidden" name="action" value="submit">
<label for="name">
Name</label>
<input type="text" class="form-control" id="name" placeholder="Enter name" required />
</div>
<div class="form-group">
<label for="email">
Email Address</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span>
</span>
<input type="email" class="form-control" id="email" placeholder="Enter email" required /></div>
</div>
<div class="form-group">
<label for="subject">
Subject</label>
<select id="subject" name="subject" class="form-control" required="required">
<option value="na" selected="">Choose One:</option>
<option value="General">General</option>
<option value="Hiring">Hiring</option>
<option value="My Work">My Work</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="message">
Message</label>
<textarea name="message" id="message" class="form-control" rows="9" cols="25" required
placeholder="Message"></textarea>
</div>
</div>
<div class="col-md-12">
<button type="submit" class="btn btn-skin pull-right" id="btnContactUs">
Send Message</button>
</div>
</div>
</form>
<?php
}
else /* send the submitted data */
{
$name=$_REQUEST['name'];
$email=$_REQUEST['email'];
$subject=$_REQUEST['subject'];
$message=$_REQUEST['message'];
if (($name=="")||($email=="")||($subject=="")||($message==""))
{
echo "All fields are required.";
}
else{
$from="From: $name, $email";
$subject="Message sent using your contact form";
mail("nilsbittmannmyers@yahoo.co.uk", $subject, $message, $from);
echo "Message sent!";
}
}
?>
感谢:) 顺便说一句,我使用byet作为网络主机,我认为他们在免费服务中启用了PHP,对不起,我在编码方面有点像菜鸟,至少可以说是XD XD
答案 0 :(得分:2)
您使用冒号action:""
而不是等号,这应该是action=""
,这是代码中的主要问题。
您还缺少email
和name
输入字段的名称属性。
即:name="email"
和name="name"
此外,From:
最初应该是电子邮件,而不是您在中的姓名
$from="From: $name, $email";
最好使用这样的东西:
$from = "From: ". $name . " <" . $email . ">\r\n";
作为标题的第4个参数。
这样,您就会收到一封正确的From
电子邮件,并在电子邮件中显示该人的姓名。
使用$from="From: $name, $email";
很可能最终会陷入垃圾邮件状态或完全被拒绝。
有关mail()
和标题的详细信息,请访问PHP.net网站:
一些标题选项:
$headers .= 'Reply-To: ' . $from . "\r\n";
$headers .= 'Return-Path: ' . $from . "\r\n";
在您的情况下,将是:
$from = "From: ". $name . " <" . $email . ">\r\n";
$from .= 'Reply-To: ' . $email . "\r\n";
$from .= 'Return-Path: ' . $email . "\r\n";
<强> 旁注: 强>
我注意到您正在使用enctype="multipart/form-data"
除非您想要附加/上传文件,否则您使用表单的内容并不是必需的,因此可以安全地将其删除。
<强> 脚注: 强>
使用error reporting会发出这些错误信号,包括Undefined index...
警告:
error_reporting(E_ALL);
ini_set('display_errors', 1);
位于开场<?php
标记下方。