【问题标题】:Having issues with php mail() formphp mail() 表单有问题
【发布时间】:2014-02-20 17:09:22
【问题描述】:

我对 php 很陌生,不能完全弄清楚这有什么问题。任何帮助,将不胜感激。此外,如果有一种方法可以测试是我还是我的托管服务不允许我发送电子邮件,这将是有益的。所以,如果我有办法做到这一点,请告诉我。

 <?php
session_start();
 $visitor_email = '';
$user_message = '';

//Validates the email address that the user entered
function spamcheck($field)
  {
  // Sanitize e-mail address
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
// Validate e-mail address
if(filter_var($field, FILTER_VALIDATE_EMAIL))
  {
  return TRUE;
}
else
{
return FALSE;
}
}


//When user clicks 'submit'
if (!isset($_POST['submit']))
{
$visitor_email = $_POST['email'];
$user_message = $_POST['message'];
//if user entered email address
if (isset($_POST['email']))
    {
    // Check if email address is valid
    $mailcheck = spamcheck($visitor_email);
        if ($mailcheck==FALSE)
            {
            echo "Invalid input";
            }
        else
            {
            $to = "example@yahoo.com";
            $subject="Customer Feedback";
            $from = $visitor_email;
            $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';

            $body = "A patron submitted the contact form:\n".
            "Email: $visitor_email \n".
            "Message: \n ".
            "$user_message\n".
            "IP: $ip\n";    

            $headers = "From: $from \r\n";
            $headers .= "Reply-To: $visitor_email \r\n";

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

            header('Location: home.html');
            }
 }
 }
?>

<form id="feedBackForm" action="<?php echo htmlentities($_SERVER['PHP_SELF'])?>" method="post">
                <fieldset id="personal">
                    <legend>Your Information</legend>
                        <label for="email">Contact Email:  </label>
                        <input id="email" name="email" type="email" value='<?php echo htmlentities($visitor_email) ?>'/>
                </fieldset>
                <fieldset id="text">
                    <legend>Message:</legend>
                        <label for="message"></label>
                        <textarea id="message" name="message"><?php echo htmlentities($user_message) ?></textarea>
                </fieldset><p><input type="submit" value="Submit" name="submit"/>
                <input type="reset" value="Reset"/>
                </p>
                </form>

我已经尝试了几次不同的迭代,而这正是我目前所处的位置

【问题讨论】:

  • 真正的问题是什么?什么不起作用?您收到任何错误消息吗?
  • 这个if (!isset($_POST['submit'])) 你告诉它“如果它没有设置,......”你想要if(isset($_POST['submit']))
  • @Fred-ii- 你应该发布一个答案。
  • 发生的一切似乎都没什么。页面刚刚重新加载。
  • @Fulmetal5 如果当前的答案不能解决你的问题,你应该从检查mail()的返回值开始。

标签: php html email


【解决方案1】:

这个if (!isset($_POST['submit'])) 你告诉它“如果它没有设置,......”

你想要if(isset($_POST['submit']))

(现在告诉它,如果它已设置,则执行条件语句中的所有内容)

注意:! 是逻辑 not 运算符。

根据jeroen的要求发布

编辑

我在设置正确的条件语句(去掉逻辑not操作符)后测试了你的代码,邮件成功收发。因此,您需要检查您的服务器是否设置为处理邮件,或者检查您的垃圾邮件以及服务器日志。

【讨论】:

  • 这帮助并让代码通过,甚至正确重定向页面,但没有发送电子邮件。
  • 您是从自己的计算机 (localhost) 还是在托管服务上运行代码?查看我的编辑,我对此进行了测试,结果还可以。 @Fulmetal5
  • 它是免费服务吗?如果是这样,很可能mail() 不可用。我以前见过这种情况很多次,人们会问同样的问题,结果却发现他们使用的服务是免费的,而且邮件不可用。 @Fulmetal5 Plus,如果邮件可用,请检查您的垃圾邮件。
  • 确实是免费的。我认为这可能是问题所在。他们没有在网站的任何地方明确说明不支持通过 php 发送邮件,这非常令人讨厌。
  • 你在哪家公司? @Fulmetal5 如果是 GoDaddy,显然如果收件人是 Gmail、Yahoo 或其他免费电子邮件服务等,GoDaddy 不会处理邮件。
【解决方案2】:

首先我认为你必须改变

if (!isset($_POST['submit']))if (isset($_POST['submit']))

因为它看起来像一个错误

【讨论】:

  • 好的,它正确地重定向了我,但没有发送电子邮件。所以这让我觉得它通过了所有的检查,还有其他问题。
猜你喜欢
  • 1970-01-01
  • 2011-09-10
  • 2011-08-24
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 2010-10-08
  • 2021-06-03
  • 2010-10-27
相关资源
最近更新 更多