【发布时间】:2022-01-02 01:55:11
【问题描述】:
我一直在尝试建立自己的网站,其中的核心部分是一个表单。我已经设置了一个电子邮件地址来接收表格结果。我已经能够在 localhost 上运行该网站,并且除了表单之外的所有内容都可以正常工作。当我单击提交时,它成功地将我发送到 PHP 文件,并且我没有收到来自该文件的任何电子邮件。我检查了我的垃圾邮件,它是空的。我是 PHP 的新手,我尝试修改我在网上找到的一些代码。我不确定我的代码是否有问题。如果有人可以提供帮助,那就太好了。我也试图能够通过表单发送图像文件。这是我尝试提交表单时服务器日志显示的屏幕截图。 Server Log Screenshot 这是我写的代码:
<?php
$title = htmlspecialchars($_POST['title']);
$coordinates = htmlspecialchars($_POST['coordinates']);
$description = htmlspecialchars($_POST['description']);
$shelterorcampsite = htmlspecialchars($_POST['shelter-campsite']);
$distanceToWater = htmlspecialchars($_POST['howfarawayiswater']);
$image = $_POST['file'];
$email_from = 'contactbackpackingproject@gmail.com';
$email_subject = "New Form submission";
$email_body = "There has been a new campsite submission.
The title is: $title;
The type is: $shelterorcampsite;
The coordinates are: $coordinates;
The description is: $description;
The distance to water is: $distanceToWater;
An image is: $image";
$to = 'contactbackpackingproject@gmail.com';
mail($to,$email_subject,$email_body,$headers);
?>
这是VS代码的截图:VS code screenshot
【问题讨论】:
-
从 localhost (stackoverflow.com/questions/15267423/php-send-mail-in-localhost) 发送电子邮件并非易事。连接到第 3 方电子邮件服务(如 mailgun.com)并触发从其服务器发送的电子邮件会更好。不过,在网上搜索
php send email localhost可能有助于为您提供更多指导。 -
我正在尝试使用 localhost 来测试网站,然后部署到云服务器。因此,即使我的代码有效,我也可能不会收到电子邮件,因为我在 localhost 上运行?
-
是的,它不会工作,因为它是本地主机。邮件功能尝试将邮件转储到工作站上运行的邮件传输代理。通常你不会有一个。即使您设置了一个,它也可能无法将邮件发送到合法的邮件服务器,因为您需要在 DNS 中设置以使其合法化的东西将不存在。最好使用 mailhog docker 镜像测试mailhog 之类的东西
-
好的,谢谢。这解决了我的问题