gpt4 book ai didi

PHP 邮件表单不会发送电子邮件字段中的空格

转载 作者:行者123 更新时间:2023-12-04 21:18:31 27 4
gpt4 key购买 nike

我的问题:我有一个发送到电子邮件地址的联系表。它通常工作正常,但如果“电子邮件”文本字段中包含空格(发送邮件的人将在其中输入他们的电子邮件),则不会发送表单。如果任何其他表单有空格,该表单仍会发送。

我知道电子邮件地址中不允许有空格,但如果发送邮件时电子邮件字段中有空格,用户仍会被带到另一个页面,说明邮件已发送,而实际上并未发送。因此,如果有人在输入电子邮件时不小心放了一个空格,网站将不会发送该表格,但会提示已发送。

我是这样设置的:在表单上,​​电子邮件字段会自动填充用户存储为用户帐户电子邮件的内容。然后使用 POST 传递此变量到另一个页面“wl_process.php”,其中字段被发送到电子邮件地址。但是,即使它会自动为用户填写电子邮件字段,他们也可能希望将他们的回复发送回不同的电子邮件。

我想做的和不想做的:我不确定为什么包含空格会阻止邮件发送。即使包含空格,我也希望它发送表格。我正在寻找从文本字段中删除所有空格的 PHP 标记或方法。我不确定那是否存在。我认为另一种解决方案可能是检查电子邮件中的空格,如果有空格,则会弹出一些内容并说“输入的电子邮件无效,请重试。”但理想情况下,我只希望它发送电子邮件。而且,如果有人知道它为什么这样做,那将对 future 的使用非常有益。

附加信息

请记住,在将空格输入电子邮件字段之前,该表单可以正常工作。如果在任何其他字段中输入空格,表单仍会发送!

此外:$var_email 是从 <? include?> 中提取的位于页面顶部。包括一些$_SESSION信息,还有 MYSQLI调用从数据库中获取电子邮件并将其转换为 PHP 变量。我怀疑这与问题有什么关系。我的问题是空格会阻止邮件发送

什么不重要

我的命名规则。不要被甩掉并认为我的变量名为 $email曾经以任何方式被视为电子邮件地址。它可以重命名为任何东西。这里只是一个变量和文本字段,发布然后通过电子邮件发送。

我的代码

第 1 页(表单所在的位置)

<div class="form_box">
...
<div class="field clearfix">
<label>Email <span>&#42;</span></label>
<input id="element_1_email" name="element_1_email" value="<? echo $var_email;?>" size="30" class="validate[optional]" type="text" onClick="(this).value=''"/>
</div>

第 2 页(发送和邮寄数据的地方)

    <?
$name = $_POST['element_0_name'];
$email = $_POST['element_1_email'];
$company = $_POST['element_2_company'];
$date = $_POST['element_3_date'];
$comment = $_POST['element_4_comment'];
$list = $_POST['element_5_list'];
$email_to = "contact@website.com";
$email_subject = "Online Form";
$email_message = "\n\n";

function clean_string($string) {
$bad = array ("content-type", "bcc:", "to:", "cc:", "href");
return str_replace($bad, "",$string);
}
$email_message .= '<div style="font-family:Arial, Helvetica, sans-serif;padding-left: 90px;font-weight: 100;font-size: 14px;color: #2a2a2a;"><table width="1070px" height="685px;"border="0" cellspacing="0" background="http://www.website/image.jpg">
<tr>
<td style="vertical-align:top;padding-left:88px;">
<h2 style="padding-top:150px;padding-left:90px;">Form Information:</h2>';
$email_message .= "Name: ".clean_string($name)."<br>";
$email_message .= "Email: " .clean_string($email). "<br>";
$email_message .= "Company: " .clean_string($company). "<br>";
$email_message .= "Date Required: " .clean_string($date). "<br>";
$email_message .= "Comment: " .clean_string($comment). "<br>";
$email_message .= '<u>List Of Things:<style> tr:nth-child(2n) {background-color:#d6d6d6;}</style> </u><br><table cellspacing="0" style="margin-top:10px;min-width:390px;border:1px solid #cccccc;">' .clean_string($list). '</table>';
$email_message .= "</div>";

$headers = 'From: '.$email."\r\n".
'Reply-To: '. $email."\r\n" .
'X-Mailer: PHP/' .phpversion();
$headers .= "MIME-Version:1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
@mail($email_to, $email_subject, $email_message, $headers);
//
?>

最佳答案

为什么不从第 2 页的 $_POST 变量中删除空格?

改变这个

$email = $_POST['element_1_email'];

对此

$email = str_replace(' ','',$_POST['element_1_email']);

------------ 更新 ------------

由于 $headers 变量中的这段代码,您的消息失败:

$headers = 'From: '.$email."\r\n".'Reply-To: '. $email."\r\n" .

您在这里使用的 $email 没有通过您的 clean_string 函数(您也可以通过添加 space 来删除空格到 $bad 数组),所以基本上您是在尝试将电子邮件发送到 $_POST['element_1_email'] 中收到的任何内容,而不进行任何清理或电子邮件验证。

关于PHP 邮件表单不会发送电子邮件字段中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17730456/

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