PHP AJAX联系表格不能发送电子邮件
试图获得一个AJAX联系表格发送电子邮件,但它不起作用,经过深入研究,我仍然不能得到什么错误,所以也许你们中的一个人可以帮帮我。PHP 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 protected]';
$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函数中缺少数据参数。
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脚本中,你可以像你一样获得帖子值。
$主体在哪里初始化?在发送邮件功能之前,我没有看到它在获取php代码的价值
我应该在php代码中定义一个主题吗? – Alexander
在调用mail函数之前,做一件事情给$ subject增加一些值,然后使用成功来检查ajax调用是否正确 –
要发送电子邮件,您需要配置类似的东西,也需要使用 要启用的安全性较低的应用程序(对于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' => '[email protected]',
'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();
}
}
PHP代码完成它的工作并且它正在发送电子邮件它删除了JS代码,所以没有问题那里。 – Alexander
好吧,反正它可能在未来有所帮助 –
请检查即25端口是开放的,以发送邮件。 –