【问题标题】:PHP Contact form will only send one timePHP联系表只会发送一次
【发布时间】:2014-07-25 13:49:38
【问题描述】:

首先,我不是网页设计师——我是平面设计师,所以我不是 PHP 专家。

这是我的问题:我有一个为网页构建的简单联系表单。根据在第一个表单选择中选择的主题,此表单有多个收件人。此表格正确显示在网站上,有效并发送 - 但只有一次。它只会在我将一个新的 .php 文件重新加载到我的服务器后发送一次。我去了不同的计算机,使用了不同的 IP,因为我阅读它可能是一个 cookie 问题(这不在我的代码中)并且仍然只发送一次。我已经研究过,我开始只看到相同的答案,所以我想我会问。我按照建议删除了不需要的空格,没有帮助。我尝试添加关于提交按钮的虚假陈述(就像我说没有 php pro,请原谅我的措辞),没有帮助。我已将“发件人”更改为@mywebsite 类型的条目,而不是推荐用于验证的“网站用户”之类的条目,但运气不好。任何帮助将不胜感激。

我的 PHP 文件:

<?php
$name = $_POST['name'];
$yourEmail = $_POST['yourEmail'];
$businessName = $_POST['businessName'];
$businessType = $_POST['businessType'];
$address = $_POST['address'];
$city = $_POST['city'];
$stateProvince = $_POST['stateProvince'];
$country = $_POST['country'];
$zipPostalcode = $_POST['zipPostalcode'];
$phone = $_POST['phone'];
$fax = $_POST['fax'];
$contactPref = $_POST['contactPref'];
$message = $_POST['message'];

switch ($sendTo)
{
case "aftermarketCustomerservice":
$sendTo="email1@ipa.net";
break;

case "technicalAssistance":
$sendTo="email2@ipa.net";
break;

case "aftermarketSales":
$sendTo="email3@ipa.net";
break;

case "performanceProducts":
$sendTo="email4@ipa.net";
break;

case "oemSales":
$sendTo="email5@ipa.net";
break;

case "exportSales":
$sendTo="email6@ipa.net";
break;

case "generalFeedback":
$sendTo="email7@ipa.net";
break;

default:
$sendTo="email8@ipa.net";
}

$subject="Website Contact Form";
$message="From: $name  \r \n Reply to: $yourEmail  \r \n Message: $message \r \n Business Name:         
$businessName \r \n Business Type: $businessType \r \n Address: $address, $city, $stateProvince, 
$zipPostalcode,$country \r \n Phone: $phone \r \n Fax: $fax \r \n Contact Preference: 
$contactPref ";

$send=mail($sendTo, $subject, $message, "From: websiteuser@website.com");

$todayis=date("l, F j, Y");
echo "Email succesfully sent to Company Name on $todayis";

?>

【问题讨论】:

  • 你检查过你的垃圾邮件文件夹吗?
  • 请注意switch-case 块只定义了一个发送地址。所以这个脚本应该只向 $sendTo 地址发送一次电子邮件。
  • 如果您没有收到任何错误,那么很可能是服务器配置问题。
  • 发送邮件后var_dump($send);的结果是什么?
  • @Fallen 据我了解的问题,电子邮件总共只发送一次。我认为它只发送到其中一个地址。

标签: php forms contact


【解决方案1】:

你应该做的是改变这些行:

$send=mail($sendTo, $subject, $message, "From: websiteuser@website.com");

$todayis=date("l, F j, Y");
echo "Email succesfully sent to Company Name on $todayis";

进入:

$send=mail($sendTo, $subject, $message, "From: websiteuser@website.com");

if ($send) {
  $todayis=date("l, F j, Y");
  echo "Email succesfully sent to Company Name on $todayis";
}
else {
  echo "Email couldn't be sent";
}

告诉我们结果是什么。

你也可以改变:

<?php

进入

<?php

ini_set('display_errors','1');
error_reporting(E_ALL);

以确保不会出现任何其他错误。当然,当您的应用程序将在生产服务器上时,您应该删除关于显示错误的这两行代码。

【讨论】:

  • 好的,我收到了“已于 2014 年 7 月 25 日星期五成功发送电子邮件至公司名称”但没有电子邮件。我与 GoDaddy 进行了交谈 - 她说,由于这些不是“常见”电子邮件,例如 @hotmail 或 @yahoo,因此必须添加它们。这已经完成 - 我想我会在大约 2 小时后重新测试,希望这是问题所在。她能够通过 .php 文件向我的 hotmail 帐户发送一封测试电子邮件,这没问题。
  • 我也可以尝试使用专用的 PHP 邮件库,例如 PHP Mailer phpmailer.worxware.com/index.php?pg=phpmailer,然后您可以使用 SMTP 更可靠的方法来发送电子邮件。
  • 好吧,GoDaddy 没有解决我的问题。我再次发送了 4 份表格,但只收到了第一份。这可能是提交按钮问题吗?因为 GoDaddy 只需使用 PHP 就可以发送多封电子邮件。
  • @KJones 而不是,如果您发送电子邮件,它正在发送并且它应该可以工作。但是,可能还有一些服务器限制(例如每日限制或小时限制)。您应该尝试使用我提到的使用 SMTP 的这个库,也许它会更好地工作。
  • 嗯,我明白了,虽然我真的很感激这个建议,但我什至不确定要下载哪个文件。然后在那个时候我会从那里去。正如我所说,我离开发人员还很远,因为我是办公室里唯一一个可以组建网站的人,所以我刚刚拿到了这个项目。我的问题的更新 - 我已将接收电子邮件更改为 hotmail,它会立即发送并一遍又一遍地发送没有问题。所以我想问题是我正在使用的公司的电子邮件,只需要以某种方式正确设置它,这样它就不会拒绝我的表格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 2012-08-23
  • 2013-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多