【问题标题】:Can't Receive Emails from HTML Contact Form [duplicate]无法从 HTML 联系表单接收电子邮件 [重复]
【发布时间】:2016-08-10 12:57:02
【问题描述】:

我一直在尝试使此联系表正常工作,但无法接收电子邮件。在我看来一切都很好。我正在使用 html 模板并尝试使用我有限的编码知识对其进行自定义。任何帮助表示赞赏。

这是我的html代码:

<form class="form-horizontal" id="contactForm" action="contact.php" method="post">
                        <!-- Notifications -->
                        <p class="success cf text-center"><i class="fa fa-check"></i> <strong>Mesajınız Gönderilmiştir.</strong></p>
                        <p class="failed cf text-center"><i class="fa fa-exclamation-circle"></i><strong> Bir hata Oluştu! Lütfen Tekrar Deneyiniz.</strong></p>

                        <div class="form-group w-50">
                            <input type="text" class="form-control" id="cfName" placeholder="İsim" required=""> 
                            <input type="email" class="form-control" id="cfEmail" placeholder="E-Mail" required="">
                        </div>
                        <div class="form-group">
                            <input type="text" class="form-control" id="cfSubject" placeholder="Başlık" required="">
                        </div>
                        <div class="form-group">
                            <textarea id="cfMessage" rows="5" class="form-control" placeholder="Mesajınız..." required=""></textarea>
                        </div> 
                        <div class="form-group m-b-0">
                            <button type="submit" class="btn btn-shadow btn-green" style="border-radius: 4px; font-size: 15px; box-shadow: rgb(72, 125, 101) 0px 0px 0px 0px; border: 3px solid rgb(219, 141, 23); background-color: rgb(219, 141, 23);">Gönder</button>
                        </div>
                    </form>

这是我的 php 代码:

<?php
// Variables
$name = trim($_POST['name']);
$email = trim($_POST['email']);
$subject = trim($_POST['subject']);
$message = trim($_POST['message']);

// Email address validation - works with php 5.2+
function is_email_valid($email) {
	return filter_var($email, FILTER_VALIDATE_EMAIL);
}


if( isset($name) && isset($email) && isset($message) && isset($subject) && is_email_valid($email) ) {

	// Avoid Email Injection and Mail Form Script Hijacking
	$pattern = "/(content-type|bcc:|cc:|to:)/i";
	if( preg_match($pattern, $name) || preg_match($pattern, $email) || preg_match($pattern, $message) || preg_match($pattern, $subject) ) {
		exit;
	}

	// Email will be send
	$to = "arda@toptal.com";  // Change with your email address
	

	// HTML Elements for Email Body
	$body = <<<EOD
	<strong>Name:</strong> $name <br>
	<strong>Email:</strong> <a href="mailto:$email?subject=feedback" "email me">$email</a> <br> <br>
	<strong>Message:</strong> $message <br>
EOD;
//Must end on first column
	
	$headers = "From: $name <$email>\r\n";
	$headers .= 'MIME-Version: 1.0' . "\r\n";
	$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

	// PHP email sender
	mail($to, $subject, $body, $headers);
}


?>

谢谢。

【问题讨论】:

  • 你是在本地主机上运行这个吗?如果是这样,您是否使用 xamp 或其他东西?
  • 给出文本字段名称而不是 ids - POST 数组使用元素名称 - 而不是 id。
  • 您是否对要传递给邮件的变量进行了 var_dump 以确保它们已被设置?您的输入字段未使用 name 属性,因此这些字段可能未正确设置。
  • error_reporting(E_ALL); 在您的 PHP 脚本顶部将有很大帮助。
  • 我正在我的托管服务上对其进行实时测试。

标签: php html forms email post


【解决方案1】:

尝试这样的形式,将 name 属性设置为 POST 数组中预期的属性

<form class="form-horizontal" id="contactForm" action="contact.php" method="post">
    <!-- Notifications -->
    <p class="success cf text-center"><i class="fa fa-check"></i> <strong>Mesajınız Gönderilmiştir.</strong></p>
    <p class="failed cf text-center"><i class="fa fa-exclamation-circle"></i><strong> Bir hata Oluştu! Lütfen Tekrar Deneyiniz.</strong></p>

    <div class="form-group w-50">
        <input name='name' type="text" class="form-control" id="cfName" placeholder="İsim" required=""> 
        <input name='email' type="email" class="form-control" id="cfEmail" placeholder="E-Mail" required="">
    </div>
    <div class="form-group">
        <input name='subject' type="text" class="form-control" id="cfSubject" placeholder="Başlık" required="">
    </div>
    <div class="form-group">
        <textarea name='message' id="cfMessage" rows="5" class="form-control" placeholder="Mesajınız..." required=""></textarea>
    </div> 
    <div class="form-group m-b-0">
        <button type="submit" class="btn btn-shadow btn-green" style="border-radius: 4px; font-size: 15px; box-shadow: rgb(72, 125, 101) 0px 0px 0px 0px; border: 3px solid rgb(219, 141, 23); background-color: rgb(219, 141, 23);">Gönder</button>
    </div>
</form>

【讨论】:

  • 谢谢。我按照您的建议使用了名称标签,但仍然没有任何反应。
【解决方案2】:

您错过了每个字段的名称

<form class="form-horizontal" id="contactForm" action="contact.php" method="post">
<!-- Notifications -->
<p class="success cf text-center"><i class="fa fa-check"></i> <strong>Mesajınız Gönderilmiştir.</strong></p>
<p class="failed cf text-center"><i class="fa fa-exclamation-circle"></i><strong> Bir hata Oluştu! Lütfen Tekrar Deneyiniz.</strong></p>
<div class="form-group w-50">
<input type="text" class="form-control" name="name" id="cfName" placeholder="İsim" required=""> 
<input type="email" class="form-control"  name="email"  id="cfEmail" placeholder="E-Mail" required="">
</div>
<div class="form-group">
<input type="text" class="form-control"  name="subject"  id="cfSubject" placeholder="Başlık" required="">
</div>
<div class="form-group">
<textarea id="cfMessage"  name="message"  rows="5" class="form-control" placeholder="Mesajınız..." required=""></textarea>
</div> 
<div class="form-group m-b-0">
<button type="submit" class="btn btn-shadow btn-green" style="border-radius: 4px; font-size: 15px; box-shadow: rgb(72, 125, 101) 0px 0px 0px 0px; border: 3px solid rgb(219, 141, 23); background-color: rgb(219, 141, 23);">Gönder</button>

【讨论】:

  • 谢谢。我按照您的建议使用了名称标签,但仍然没有任何反应。
【解决方案3】:

您缺少输入类型字段名称,这导致您无法将数据传递到下一页“contact.php”

<form class="form-horizontal" id="contactForm" action="contact.php" method="post">
<!-- Notifications -->
<p class="success cf text-center"><i class="fa fa-check"></i> <strong>Mesajınız Gönderilmiştir.</strong></p>
<p class="failed cf text-center"><i class="fa fa-exclamation-circle"></i><strong> Bir hata Oluştu! Lütfen Tekrar Deneyiniz.</strong></p>

<div class="form-group w-50">
    <label>Username*</label>
    <input type="text" name="name" class="form-control" id="cfName" placeholder="Username" required=""> 
</div>
<div class="form-group w-50">
    <label>Email*</label>
    <input type="email" name="email" class="form-control" id="cfEmail" placeholder="E-Mail" required="">
</div>
<div class="form-group">
    <label>Subject*</label>
    <input type="text" name="subject" class="form-control" id="cfSubject" placeholder="Subject" required="">
</div>
<div class="form-group">
    <label>Message*</label>
    <textarea id="cfMessage" name="message" rows="5" class="form-control" placeholder="Message..." required=""></textarea>
</div> 
<div class="form-group m-b-0">
    <button type="submit" class="btn btn-shadow btn-green" style="border-radius: 4px; font-size: 15px; box-shadow: rgb(72, 125, 101) 0px 0px 0px 0px; border: 3px solid rgb(219, 141, 23); background-color: rgb(219, 141, 23);">Gönder</button>
</div>
</form>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 2012-05-02
    • 2017-05-27
    • 1970-01-01
    相关资源
    最近更新 更多