来自HTML表单的PHP邮件

时间:2013-11-12 21:41:21

标签: php html forms email

我正在尝试在我正在处理的网站上设置联系表单,其代码如下所示:

<form action="contact.php" method="POST">
           <ul>
        <li>
            <label for="name">Name:</label><br>
            <input type="text" name="name" />
            </li>
            <br>
            <li>
            <label for="email">E-mail:</label><br>
            <input type="email" name="email" />
            </li>
            <br>
            <li>
            <div id="label">Enquiry:</div>
            <select name="interest"><br>
            <option value="Wedding">Wedding</option>
            <option value="Engagement/Couple">Engagement or Couple</option>
            <option value="Portrait">Portrait</option>
            <option value="Family">Family</option>
            <option value="Children">Children</option>
            </select>
            </li>
            <br> 
            <li>
            <label for="message">Message:</label><br>
            <textarea name="message" cols="40" rows="6"></textarea>
            </li>
            <br>
            <li>
            <button class="submit" type="submit" value="Submit">Submit Form</button>
            </li>
       </ul>
</form>

最初我只是将表单操作作为mailto:myemail@example.com,但我显然希望用户只需提交表单并发送电子邮件,而不是仅仅打开他们的电子邮件应用程序。我正在尝试构建一个PHP脚本来执行此操作,但是我还没有运气,可能是因为这是我第一次看到PHP,更不用说尝试编写它了。

我已经查看了许多不同的示例并深入研究了PHP手册以获得帮助,但无论我写的是什么导致相同的结果,按下我的表单上的提交按钮并在我的收件箱中什么也没有收到。所以我开始了一种故障查找过程,试图帮助确定问题。我将从真正基本的PHP脚本开始,然后尝试为每个脚本添加更多内容,并查看它的中断位置。

我首先将表单操作更改为php测试脚本,如下所示:

<?php
phpinfo() ;
?>

这很好用,并显示了应该的PHP信息页面。太棒了所以我知道我的主机支持php并安装它。这不是问题所在。其次,我将表单操作更改为以下代码:

<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?> 
</body>
</html>

再次按预期显示Hello World段落。在此之后我尝试了我能想到的最基本的php邮件脚本:

<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php
mail('myemail@example.com', 'Contact Form', 'This is a test');
?>
</body>
</html>

当我按下表单上的提交按钮时,所有这些都成功地显示了一个空白页面,其中包含我的浏览器地址栏中我的PHP脚本的URL,并且我没有收到任何电子邮件。不在我的收件箱或垃圾文件夹中,无处可去。由于这是一个如此简单的剧本,我在最后有两条思路。 1是我只是在做一些非常基本的错误,考虑到我对php的知识非常有限,这很可能。 2是一个更复杂的事情发生,也许我的主机的PHP设置不正确我正在尝试做什么?我不知道。

我为这个长期啰嗦的问题道歉,我只是想展示我到目前为止所做的事情,希望它可以帮助你们给予我任何帮助。非常感谢您对我的问题的任何帮助,谢谢。

4 个答案:

答案 0 :(得分:1)

要考虑的一件事是您的电子邮件提供商可能会阻止您的电子邮件。我有一个Heart Internet主机,我尝试从Heart托管的网站发送一封电子邮件到我的AoL帐户,电子邮件根本没有显示。但是任何发往Gmail的电子邮件都可以。这是因为由于网站产生垃圾邮件,AoL已阻止所有来自Heart的电子邮件。

我将在下面输入一些PHP代码:

// Input your desired location instead of email address
$to = 'email address';
$subject = 'Test email';

$message = '<html><body>';
    $message .= '<h1>This is an email.</h1>';
    $message .= '<p>I hope you like it.</p>';
$message .= '</body></html>';

$headers = 'MIME-Version: 1.0\r\n';
$headers .= 'Content-Type: text/html; charset=ISO-8859-1\r\n';

mail($to,$subject,$message,$headers);

答案 1 :(得分:1)

或者您从localhost运行。
或者您的php.ini文件中的SMTP设置未正确配置

答案 2 :(得分:0)

我的主机已阻止我正在使用的程序包的邮件服务器。我应该检查的东西,但在我的沮丧中,我忽略了它。谢谢你没有用愚蠢的答案回答我的愚蠢问题。很抱歉让你读到了所有这一切,但是一个清新的头和一双眼睛总能创造奇迹!

答案 3 :(得分:-2)

检查表单顶部,写入<form action="contact.php" method="POST">,将平均表单值发布到contact.php文件,其中写入邮件函数以发送带有表单数据的电子邮件。请显示contact.php

的代码