php – 不通过电子邮件发送
我正在尝试为客户创建一个简单的电子邮件表单,但无法获取< textarea>作为消息发送.我已经尝试了迄今为止我发现的所有内容,但没有任何工作正常…
这是我的代码: <h4>Email Al</h4> <table> <form name="contactForm" id="contact" action="send_form_email.php" method="post"> <tr> <td> <label>Name:</label> <input type="text" name="name"> </td> <td> <label>Email Address:</label> <input type="email" name="email"> </td> </tr> <tr> <td colspan="2"> <label>Website (if Available):</label> <input type="text" name="website"> </td> </tr> <tr> <td colspan="2"> <label>Your Message:</label></br> <textarea for="" name="information" width="100%" rows="10" form="contactForm"></textarea> </td> </tr> <tr> <td colspan="2"> <input type="submit" value="Send Message"> </td> </tr> </form> </table> 这是index.php文件中的表单,下面是send-email.php电子邮件 <?php $name = $_POST['name']; $email = $_POST['email']; $website = $_POST['website']; $message = $_POST['information']; $email_from = 'myemail@gmail.com'; $email_subject = $name . " has sent you a message!"; $email_body = "You have received a new message from " . $name . " via your website!n". "Name:n $namen". "Email:n $emailn". "Website:n $websiten". "Message:n $messagen". $to = "clientemail@gmail.com"; $headers = "From: $email_from rn"; $headers .= "Reply-To: $visitor_email rn"; mail($to,$email_subject,$email_body,$headers); function IsInjected($str) { $injections = array('(n+)','(r+)','(t+)','(%0A+)','(%0D+)','(%08+)','(%09+)' ); $inject = join('|',$injections); $inject = "/$inject/i"; if(preg_match($inject,$str)) { return true; } else { return false; } } if(IsInjected($visitor_email)) { echo "Bad email value!"; exit; } ?> <?php header("Location: /formsubmitted.php"); /* Redirect browser */ exit(); ?> 如果有人有任何线索,为什么这是故障,我也很想知道!这是我自己创建的第一个消息/电子邮件php函数之一,因为我通常为wordpress开发,所以我通常只为我的客户端安装一个插件. 解决方法
这是因为这一行:(参考我的脚注)
"Message:n $messagen". 你有一个点而不是(结束)分号; 编辑:您需要从< textarea>中删除form =“contactForm”.经过测试,它与邮件一起使用时没有显示. 和错误报告会告诉你有关它. > http://php.net/manual/en/function.error-reporting.php 存在:
和
同时: $headers .= "Reply-To: $visitor_email rn"; 和 if(IsInjected($visitor_email)) $visitor_email在您的代码中未定义.您应该使用$email代替$visitor_email的所有实例. 然后你有for =“”,它在你的< textarea中似乎不是有效的语法...... 那个=“”是不明确的. 参考:https://developer.mozilla.org/en/docs/Web/HTML/Element/textarea 您还应该使用条件!empty()检查空字段. > http://php.net/manual/en/function.empty.php 脚注: 经过更密集的测试,关于我上面提到的点,我必须说明以下内容: 奇怪的是,PHP认为它是有效的语法,因为在这里有一个分号并包含在这里$to =“clientemail@gmail.com”; 这样做仍然是发送邮件,但也包括在电子邮件中,这显然不包含在$email_body变量体中. 因此,我的答案的第一部分在某种程度上是正确的,形式=“contactForm”是这里的主要罪魁祸首. >您可能打算使用ID id =“contactForm”或class class =“contactForm”.两者都有效使用,并将其包含在您的邮件中. 但是,您将无法使用name =“contactForm”,因为您的< form>拥有那个命名属性. > name和id属性都是(意味着)唯一的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |