2017-08-13 36 views
-3

我的網頁上的聯繫表單最終發送電子郵件,但它不會以正確的格式發送。以下是我所得到的電子郵件。出於隱私原因,我將電子郵件和組織模糊不清。php表單發送電子郵件,但沒有正確的方式

updated email outcome

無論如何,你可以從圖片,名稱,電子郵件和郵件內容的人會寫了一首歌的聯繫方式看到的是在主題行,而不是實際的電子郵件箱 - - 當我填寫表格來測試時,我寫下了jibberjabber。有沒有一種方法可以格式化我的代碼,以便他們寫下的消息和名稱位於消息框中而不是主題框中,並且電子郵件是從將電子郵件發送到表單中的人員發送的。任何幫助非常感謝,並提前感謝!

這是到目前爲止我的代碼:

HTML

 <form id="main-contact-form" name="contact-form" method="post" action="sendemail.php" accept-charset="UTF-8"> 
    <div class="row wow fadeInUp" data-wow-duration="1000ms" data-wow-delay="300ms"> 
     <div class="col-md-6"> 
      <div class="form-group"> 
       <input type="text" name="name" class="form-control" placeholder="Name" required="required" style="color: #ffffff"/> 
      </div> 
     </div> 
     <div class="col-md-6"> 
      <div class="form-group"> 
       <input type="email" name="email" class="form-control" placeholder="Email Address" required="required" style="color: #ffffff"/> 
      </div> 
     </div> 
    </div> 
    <div class="form-group"> 
     <textarea name="message" id="message" class="form-control" rows="4" placeholder="Enter your message" required="required" style="color: #ffffff"></textarea> 
    </div> 
    <div class="form-group"> 
     <button type="submit" class="btn-submit">Send Now</button> 
    </div> 
</form> 

CSS--我把它放在這裏,以防萬一。

#contact { 
    background-image: url(../images/contact-bg.jpg); 
    padding-bottom: 0; 
    height: auto; 
    background-attachment: fixed; 
} 

#contact .heading { 
    padding-top: 95px; 
} 

#main-contact-form { 
    text-align: center; 
} 

.contact-info { 
    text-align: left; 
} 

form { 
    align: center; 
    margin: 0 auto; 
} 

.form-control { 
    background-color: transparent; 
    border-color: rgba(255, 255, 255, .8); 
    height: 50px; 
    border-radius: 1; 
    box-shadow: none; 
} 

textarea.form-control { 
    min-height: 180px; 
    resize: none; 
} 

.form-group { 
    margin-bottom: 30px; 
} 


ul.address { 
    margin-top: 30px; 
    list-style: none; 
    padding: 0; 
    margin: 0; 
} 

.contact-info ul li { 
    margin-bottom: 8px; 
} 

.contact-info ul li a { 
    color: #fff; 
} 

.btn-submit { 
    display: block; 
    padding: 12px; 
    width: 100%; 
    color: #fff; 
    border: 0; 
    margin-top: 40px; 
} 

Java腳本

 (function ($) { 
     var messages = { 
      'progress': '<p><i class="fa fa-spinner fa-spin"></i> Sending email...</p>', 
      'success': '<p class="text-success">Thank you for contacting us. We will contact you as early as possible.</p>', 
      'error': '<p class="text-danger">Aw snap! Something didn\'t go right!</p>' 
     }; 
     var $form = $('form#main-contact-form'); 
     var formStatus = $('<div class="form_status"/>'); 
     $form.submit(function (e) { 
      e.preventDefault(); 
      $.ajax({ 
       type: 'POST', 
       url: $form.attr('action'), 
       data: $form.serialize(), 
       dataType: 'json', 
       beforeSend: function() { 
        formStatus.html(messages.progress).fadeIn().prependTo($form); 
       }, 
       success: function (data) { 
        if (data.success === true) { 
         formStatus.html(messages.success); 
        } else { 
         formStatus.html(messages.error); 
        } 
        formStatus.fadeIn().delay(3000).fadeOut(); 
       }, 
       error: function() { 
        formStatus.html(messages.error).fadeIn().delay(3000).fadeOut(); 
       } 
      }); 
     }) 
    })(jQuery); 

PHP

<?php 
$to = '[email protected]'; 
$name = !empty($_POST['name']) ? filter_var(trim($_POST['name']), FILTER_SANITIZE_STRING) : ''; 
$from = !empty($_POST['email']) ? filter_var(trim($_POST['email']), FILTER_SANITIZE_EMAIL) : $to; 
$message = !empty($_POST['message']) ? filter_var(trim($_POST['message']), FILTER_SANITIZE_STRING) : ''; 

$body = "Name: {$name}\r\nEmail: {$from}\r\nMessage: {$message}"; 

$body = wordwrap($body, 70, "\r\n"); 

$headers = [ 
    'MIME-Version: 1.0', 
    'Content-type: text/plain; charset=iso-8859-1', 
    "From: $name <$from>", 
    "Reply-To: <$from>", 
    'X-Mailer: PHP/' .phpversion() 
]; 
    $subject = 'some subject'; 
$success = mail($to, $body, implode("\r\n", $headers)); 

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') { 
    die(json_encode(['success' => $success])); 
} 

echo $success ? 'Sent Successfully.' : 'An error occurred'; 

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

?> 
+1

要留意 - 不要一遍又一遍地張貼的問題 - 這可能會導致一個問題[禁令](https://stackoverflow.com/help/問題禁令),通過降低/刪除問題。 –

回答

2

你缺少的主題參數,讀the docs

而且,'\r\n'是不一樣的"\r\n"

$subject = 'some subject'; 
$success = mail($to, $subject, $body, implode("\r\n", $headers)); 
+0

我在你的代碼中加入了你的建議,這次我甚至沒有收到郵件。另外,我編輯了我的問題以顯示您的代碼。 – Nora

+0

我再次檢查了一會兒,認爲網站可能需要一段時間才能工作,這次我收到了一封電子郵件。如果你看看我的問題,我更新了圖片。我仍然得到相同的結果,但至少消息的內容是某種格式。儘管如此,該消息仍然在標題中。 – Nora

+0

也顯示更新的PHP代碼。我建議嘗試一些更簡單的方法,只是在某個地方做一些不會做任何事情的頁面,但發送一封電子郵件,並確保遵循文檔 – Isaac

相關問題