繁体   English   中英

PHP邮件表单问题

[英]PHP mail form problems

我正在创建一个带有复选框,几个输入选项卡和一个文本输入部分的简单邮件表单。 它使用PHP检索信息,然后通过电子邮件将其发送到特定的电子邮件。 现在,我已经将其通过电子邮件发送到我自己的yahoo电子邮件以进行测试。 当我在托管帐户jacobbuller.com/testsites/peacock/contact.php上测试站点时,该表单可以正常运行并转发来自我的通用“ theski”服务器电子邮件的电子邮件。 但是,当我将网站上传到peacockautoservice.com的实际实时托管帐户时,联系表单有效-它执行并在URL中发送?msg = 1变量-但我从未在Yahoo帐户中收到电子邮件...

这是我用来发送电子邮件的PHP。

<?php ob_start();
<?php 
$required_field = array('name', 'email', 'message');
foreach($required_field as $fieldname) {
if (!isset($_POST[$fieldname])) {
  $errors[] = $fieldname;
}}
if (empty($errors)) {
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$contact = $_POST['contact'];
$phone = $_POST['phone'];
$services = IsChecked('checkboxes', 'factory');
$services .= IsChecked('checkboxes', 'timing belt');
$services .= IsChecked('checkboxes', 'brakes');
$services .= IsChecked('checkboxes', 'computerized');
$services .= IsChecked('checkboxes', 'steering and suspension');
$services .= IsChecked('checkboxes', 'heating and air');
$services .= IsChecked('checkboxes', 'electrical');
$services .= IsChecked('checkboxes', 'other');
$body = "Customer:" . $name;
$body.= "Phone Number:" . $phone;
$body.= "Contact:" . $contact;
$body.= "Services:" . $services;
$body.= "Message:" . $message;
$to = "jcbbuller@yahoo.com";
$subject = "Peacock Auto Services Inquirey";
$from = $email;
$mailed = mail($to, $subject, $body, $from) or die("Error!");
 }
if($mailed) {
    redirect_to("../contact.php?msg=1");
}

 ?>
 <?php
 // IsChecked FUNCTION - Detemines what checkbox are/aren't checked on form.
 function IsChecked($postname, $value){ 
    if(!empty($_POST[$postname])) {
        foreach($_POST[$postname] as $job) {
        if ($job == $value) {
            $project = "  ". $value . "  ";
            return $project;

            }
        }
    }
  } //END IsChecked FUNCTION

 function redirect_to( $location = NULL ) {
    if ($location != NULL) {
        header("Location: {$location}");
        exit;
        }
     }   
 ?>
 <?php ob_end_flush(); ?>

如果您发现上述PHP出了点问题,或者知道为什么他们的GoDaddy托管帐户未执行电子邮件,请告诉我。 我尝试使用他们的客户服务网络,但是他们说他们不能帮我编写我的代码...

您的问题主要在服务器端。 邮件功能正在运行,因为您对其进行了检查,如果失败了,它将通知您。 因此,邮件肯定会发送。 如果邮件服务器在您的生产服务器上正常工作,请在yahoo邮件服务器上检查SPAM文件夹。 我建议您要求托管服务提供商启用SPF和DKIM记录,因为大多数电子邮件提供商都需要发件人身份验证(如果它不是垃圾邮件),而这些记录将对您有所帮助。

我还可以看到您没有使用任何标头,因此建议您使用扩展标头,以避免提供程序将您标识为垃圾邮件发送者。 我使用下面提到的标头,并且我的电子邮件从未在anyprovider上发送垃圾邮件,但这同样取决于服务器的IP信誉。

    $headers .= "Reply-To: Awaraleo <email@domain.org>\r\n";
    $headers .= "Return-Path: Awaraleo <email@domain.org>\r\n";
    $headers .= "From: Awaraleo <email@domain.org>\r\n"; 
    $headers .= "Organization: Awaraleo\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $headers .= "X-Priority: 3\r\n";
    $headers .= "X-Mailer: PHP". phpversion() ."\r\n";

然后像

mail($to,$subject,$message,$headers);

这里的email@domain.org应该是在实施此表单的域上创建的有效电子邮件地址。

另一种可靠的方法是在编码中使用SMTP身份验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM