Php 联系人表单不发送发件人电子邮件
我不知道这是否是一个常见的问题,但我似乎不明白为什么会发生这种情况。 我正在尝试处理一个表单,并让它将详细信息发送到电子邮件。很简单。 下面是它的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
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>";
}
?>
可以找到phpmail
函数的函数参考。回答了评论中的问题:
来自的
是$comments
不应该是$senderEmail
然而,这并不是那么简单。你不能仅仅从
电子邮件地址中选择任何一个,然后期望它工作。如果您试图欺骗发件人地址,电子邮件客户端很可能会向您发送垃圾邮件
每当您更改From
标题时,您还需要更改reply to
标题,在您的情况下,您可能应该将From
标题作为服务器上的电子邮件地址之一,并且只将reply to
标题更改为用户输入的任何内容。这样你的信息就更可能不会被垃圾邮件,因为你看起来不像是在偷偷摸摸
另一个选择是使用一个简单的库为您处理所有这些
这是我写的一个非常简单的例子:如果$senderEmail
或$Name
或其中任何一个值包含字符串“unknown sender”,那么很明显,这就是发布到表单中的值。在这种情况下,这个代码正是它想要做的。来自
的是$comments
不应该是$senderEmail
?@chris85-从它看起来的样子来看,这肯定是个问题:)我明白你说的。我还发现了为什么它给了我一个空的电子邮件地址,因为$Name"); 他错了。我解决了这个问题,它会发送表单中要求的全部信息。只是发件人地址未知,但我可以在适当的时候解决。我的另一个问题是,当我尝试在我的服务器(免费托管)中使用表单时,它是好的。当我尝试在另一台服务器上使用它(通过cloudflare运行)时,它会给我504网关错误。知道为什么吗?