Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 联系人表单不发送发件人电子邮件_Php_Email_Contact Form - Fatal编程技术网

Php 联系人表单不发送发件人电子邮件

Php 联系人表单不发送发件人电子邮件,php,email,contact-form,Php,Email,Contact Form,我不知道这是否是一个常见的问题,但我似乎不明白为什么会发生这种情况。 我正在尝试处理一个表单,并让它将详细信息发送到电子邮件。很简单。 下面是它的PHP代码。当有人填写表单时,它会显示除发件人电子邮件以外的所有内容。它以未知发送者的身份出现。有人知道我怎么修吗? 非常感谢所有抽出时间来看这个的人 <?php if($_POST["submit"]) { $recipient="emailx@gmail.com"; $subject="Form to email message"; $Na

我不知道这是否是一个常见的问题,但我似乎不明白为什么会发生这种情况。 我正在尝试处理一个表单,并让它将详细信息发送到电子邮件。很简单。 下面是它的PHP代码。当有人填写表单时,它会显示除发件人电子邮件以外的所有内容。它以未知发送者的身份出现。有人知道我怎么修吗? 非常感谢所有抽出时间来看这个的人

<?php

if($_POST["submit"]) {
$recipient="emailx@gmail.com";
$subject="Form to email message";
$Name=$_POST["Name"];
$Phone=$_POST["Phone"]; 
$senderEmail=$_POST["senderEmail"];
$comments=$_POST["comments"];

$mailBody="Name: $Name\nPhone: $Phone\nEmail: $senderEmail\n\n$comments";

mail($recipient, $subject, $mailBody, "From: $Name <$comments>");

$thankYou="<p>Thank you! Your message has been sent.</p>";
}

?>

似乎标题设置不正确。 试着这样做:

<?php

if($_POST["submit"]) {
  $recipient="emailx@gmail.com";
  $subject="Form to email message";
  $Name=$_POST["Name"];
  $Phone=$_POST["Phone"]; 
  $senderEmail=$_POST["senderEmail"];
  $comments=$_POST["comments"];
  $header = "From: $senderEmail" . "\r\n" .
     "Reply-To: $senderEmail" . "\r\n" .
     'X-Mailer: PHP/' . phpversion();

  $mailBody="Name: $Name\nPhone: $Phone\nEmail: $senderEmail\n\n$comments";

  mail($recipient, $subject, $mailBody, $header);

  $thankYou="<p>Thank you! Your message has been sent.</p>";
}

?>

可以找到php
mail
函数的函数参考。

回答了评论中的问题:


来自的
$comments
不应该是
$senderEmail

然而,这并不是那么简单。你不能仅仅从
电子邮件地址中选择任何一个
,然后期望它工作。如果您试图欺骗发件人地址,电子邮件客户端很可能会向您发送垃圾邮件

每当您更改
From
标题时,您还需要更改
reply to
标题,在您的情况下,您可能应该将
From
标题作为服务器上的电子邮件地址之一,并且只将
reply to
标题更改为用户输入的任何内容。这样你的信息就更可能不会被垃圾邮件,因为你看起来不像是在偷偷摸摸

另一个选择是使用一个简单的库为您处理所有这些


这是我写的一个非常简单的例子:

如果
$senderEmail
$Name
或其中任何一个值包含字符串“unknown sender”,那么很明显,这就是发布到表单中的值。在这种情况下,这个代码正是它想要做的。来自
$comments
不应该是
$senderEmail
?@chris85-从它看起来的样子来看,这肯定是个问题:)我明白你说的。我还发现了为什么它给了我一个空的电子邮件地址,因为$Name"); 他错了。我解决了这个问题,它会发送表单中要求的全部信息。只是发件人地址未知,但我可以在适当的时候解决。我的另一个问题是,当我尝试在我的服务器(免费托管)中使用表单时,它是好的。当我尝试在另一台服务器上使用它(通过cloudflare运行)时,它会给我504网关错误。知道为什么吗?