首页 / 邮件 / php – 不通过电子邮件发送
php – 不通过电子邮件发送
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 不通过电子邮件发送,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3156字,纯文字阅读大概需要5分钟。
内容图文
![php – 不通过电子邮件发送](/upload/InfoBanner/zyjiaocheng/746/8b82f95a7f24479484be56d7cbeb6a9a.jpg)
我正在尝试为客户创建一个简单的电子邮件表单,但无法获取< 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 $name\n".
"Email:\n $email\n".
"Website:\n $website\n".
"Message:\n $message\n".
$to = "clientemail@gmail.com";
$headers = "From: $email_from \r\n";
$headers .= "Reply-To: $visitor_email \r\n";
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 $message\n".
你有一个点而不是(结束)分号;
编辑:您需要从< textarea>中删除form =“contactForm”.经过测试,它与邮件一起使用时没有显示.
和错误报告会告诉你有关它.
> http://php.net/manual/en/function.error-reporting.php
存在:
Notice: Undefined index: information (line 8)
和
Notice: Undefined variable: visitor_email (line 26 and 55)
同时:
$headers .= "Reply-To: $visitor_email \r\n";
和
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属性都是(意味着)唯一的.
内容总结
以上是互联网集市为您收集整理的php – 不通过电子邮件发送全部内容,希望文章能够帮你解决php – 不通过电子邮件发送所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。