簡體   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