[英]PHP AJAX contact form dosen't send email
試圖獲取AJAX聯系人表格以發送電子郵件,但該表格無法正常工作,經過深入的研究,我仍然無法理解問題所在,因此也許有人可以幫忙。
JS:
// Contact form
var form = $('#main-contact-form');
form.submit(function(event){
event.preventDefault();
var form_status = $('<div class="form_status"></div>');
$.ajax({
url: $(this).attr('action'),
beforeSend: function(){
form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn() );
}
}).done(function(data){
form_status.html('<p class="text-success">Thank you for contact us. As early as possible we will contact you</p>').delay(3000).fadeOut();
});
});
的PHP
<?php
if(isset($_POST['submit'],$_POST['name'],$_POST['email'],$_POST['message'])){
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$email_from = $email;
$email_to = 'email@email.com';
$body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . "\n\n" . 'Message: ' . $message;
$success = mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
$response = array(); }
echo json_encode($response);
die;
?>
的HTML
<div class="contact-form bottom">
<h2>Send a message</h2>
<form id="main-contact-form" name="contact-form" method="post" action="sendemail.php">
<div class="form-group">
<input type="text" id="name" name="name" class="form-control" required="required" placeholder="Name">
</div>
<div class="form-group">
<input type="email" id="email" name="email" class="form-control" required="required" placeholder="Email Id">
</div>
<div class="form-group">
<textarea name="message" id="message" required class="form-control" rows="8" placeholder="Your text here"></textarea>
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-submit" value="Submit">
</div>
</form>
</div>
請幫忙! 我沒辦法了。
Ajax函數缺少data參數。
var form = $('#main-contact-form');
form.submit(function(event){
event.preventDefault();
var form_status = $('<div class="form_status"></div>');
$.ajax({
url: $(this).attr('action'),
type: 'POST',
data: { // pass the data values sending through ajax
name : name,
email : email,
message : message
},
beforeSend: function(){
form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn() );
}
}).done(function(data){
form_status.html('<p class="text-success">Thank you for contact us. As early as possible we will contact you</p>').delay(3000).fadeOut();
});
});
您可以獲取要通過ajax發送到php腳本的值,如下所示:
var name = $('#name').val();
var email = $('#email').val();
var message = $('#message').val();
一旦獲得了這些值,就可以調用ajax函數,將它們作為數據參數傳遞並將數據類型設置為POST
。 然后,在您的PHP腳本中,您可以像您一樣獲得帖子值。
$ subject在哪里初始化? 我看不到它在發送到郵件功能之前在php代碼中獲得價值
要發送電子郵件,您需要配置類似的內容,還需要使用“不安全的應用”啟用(對於Gmail)。 要啟用“不安全”,您需要登錄到您的帳戶,然后單擊以下鏈接:
http://know.mailsbestfriend.com/smtp_error_password_command_failed_5345714-1194946499.shtml
public function sendEmail($email, $subject, $message) {
$config= array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.gmail.com',
'smtp_port' => 465,
'smtp_user' => 'example@gmail.com',
'smtp_pass' => 'xxxxxxx',
'mailtype' => 'html',
'charset' => 'iso-8859-1',
'wordwrap' => TRUE
);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");
$this->email->initialize($config);
$this->email->from('localhost', 'Team Name');
$this->email->to($email);
$this->email->subject($subject);
$this->email->message($message);
if(!$this->email->send()){
echo $this->email->print_debugger();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.