【发布时间】:2014-09-11 21:21:50
【问题描述】:
我似乎无法获得向我的电子邮件发送消息的表单。可能是服务器的原因?这是我的代码:
<?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
【问题讨论】:
-
您应该使用 mailchimp 或 postmarkapp 之类的服务来发送邮件。除此之外,您只传递 From: $name, $email 作为标题。这样做无疑会陷入垃圾邮件过滤器中,因为发送邮件的域可能与外发服务器不匹配。改为使用回复,并传递完整的邮件标题或使用 swiftmailer 为您完成。
-
mail()不发送通常与周围代码无关,但与服务器配置有关。即使您提供了这方面的实际详细信息,这里也没有任何帮助。调查 PHPMailer/SwiftMailer 为typically advised。 -
另外,检查所有请求字段的 isset。查看 trim() 以及。在这里要做很多事情来清理整个事情。
标签: php forms email message contact