gpt4 book ai didi

php - <textarea> 不通过电子邮件发送

转载 作者:可可西里 更新时间:2023-11-01 00:19:33 25 4
gpt4 key购买 nike

我正在尝试为客户创建一个简单的电子邮件表单,但无法获得 <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".

你有一个点而不是(结束)分号 ;

编辑:您需要删除 form="contactForm"来自 <textarea> .经测试,与它一起使用时,它不会在邮件中显示。

错误报告会告诉您这件事。

存在:

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... 中似乎不是有效语法

那个for=""是模棱两可的。

引用:https://developer.mozilla.org/en/docs/Web/HTML/Element/textarea

您还应该使用条件 !empty() 检查空字段.


脚注:

经过更深入的测试,关于我上面提到的点,我必须声明如下:

奇怪的是,PHP 认为它是有效的语法,因为在 $to = "clientemail@gmail.com"; 末尾有一个分号 in and included|。

这仍然是发送邮件,还将其包含在电子邮件中,这显然不包含在 $email_body 中变量体。

因此,我的第一部分回答在一定程度上是对的,form="contactForm"是这里的罪魁祸首。

  • 您可能打算使用 ID id="contactForm"或一类 class="contactForm" .两者均可有效使用,并将包含在您的邮件中。

但是,您将无法使用 name="contactForm"因为你的 <form>拥有该命名属性。

  • nameid属性(应该)是唯一的。

关于php - &lt;textarea&gt; 不通过电子邮件发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34829704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com