Я создал программу для отправки электронной почты с приложением. Сначала я создаю его без ajax. Затем он работал правильно. Но когда я использовал jquery ajax, это не сработало. Когда я нажимаю кнопку «Применить», ничего не происходит. Мой код ниже.
<form action="sendemail.php" enctype="multipart/form-data" method="post"> <h1 class="cta-title">Its a Call To Action</h1> <div class="cta-desc"> <input type="text" value='<?= $row['catogary'];?>' readonly style="width: 75%"><br><br> <input type="text" value='<?= $row['company_name'];?>' readonly style="width: 75%"><br><br> <input type="text" value='<?= $row['location'];?>' readonly style="width: 75%"><br><br> <input type="text" value='<?= $row['qulification'];?>' readonly style="width: 75%"><br><br> <input type="text" value='<?= $row['catogary'];?>' readonly style="width: 75%"><br><br> <input type="text" value='<?= $row['indate'];?>' readonly style="width: 37.5%"> <input type="text" value='<?= $row['expdate'];?>' readonly style="width: 37.5%"><br> <input type="text" id="email" name="email" value='<?= $row['email'];?>'><br> <input type="file" name="uploaded_file" id="uploaded_file" class="text-center center-block well well-sm"> <input type="button" id="btn" name="btn" class="btn btn-primary" value="Apply"> </div> <script> $('#btn').click(function () { $.ajax({ method:"POST", url:"sendemail.php", data:{email:$('#email').val()}, success:function (data) { alert(data); return false; } }); }); </script> </form>
sendmail.php
<?php $email2=$_POST['email']; require_once('PHPMailer/PHPMailerAutoload.php'); $mail = new PHPMailer; $mail->IsSMTP(); // enable SMTP $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only $mail->SMTPAuth = true; // authentication enabled $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail $mail->Host = "smtp.gmail.com"; $mail->Port = 465; // or 587 $mail->IsHTML(true); $mail->Username = "getinternshipuwu@gmail.com"; $mail->Password = "uwucst14xxxx"; $mail->SetFrom("getinternshipuwu@gmail.com"); $mail->FromName = "Internship Management"; $mail->addAddress($email2); / $mail->addReplyTo("getinternshipuwu@gmail.com", "Reply"); $mail->isHTML(true); $mail->Subject = 'CV for internship Vacancy'; $mail->Body = "Attached"; if (isset($_FILES['uploaded_file']) && $_FILES['uploaded_file']['error'] == UPLOAD_ERR_OK) { $mail->AddAttachment($_FILES['uploaded_file']['tmp_name'],$_FILES['uploaded_file']['name']); } if(!$mail->send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo 'Successfully Applied for vacancy'; } ?>
Вот моя реализация. Я меняю некоторые атрибуты. Но обратите внимание на то, что я меняю для своих целей ssl на tls и на 587.
<!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script> </head> <body> <form onsubmit="return submitForm();" enctype="multipart/form-data" method="post" name="fileinfo" id="fileinfo" > <h1 class="cta-title">Its a Call To Action</h1> <div class="cta-desc"> <input type="text" value='a' readonly style="width: 75%"><br><br> <input type="text" value='b' readonly style="width: 75%"><br><br> <input type="text" value='c' readonly style="width: 75%"><br><br> <input type="text" value='d' readonly style="width: 75%"><br><br> <input type="text" value='e' readonly style="width: 75%"><br><br> <input type="text" value='f' readonly style="width: 37.5%"> <input type="text" value='g' readonly style="width: 37.5%"><br> <input type="text" id="email" name="email" value='iordanhs92@hotmail.com'><br> <input type="file" name="files" id="files" class="text-center center-block well well-sm"> <input type="submit" id="btn" name="btn" class="btn btn-primary" value="Apply"> </div> <script> function submitForm() { console.log("submit event"); var fd = new FormData(document.getElementById("fileinfo")); fd.append("label", "WEBUPLOAD"); $.ajax({ url: "mailattach.php", type: "POST", data: fd, processData: false, // tell jQuery not to process the data contentType: false // tell jQuery not to set contentType }).done(function( data ) { console.log("PHP Output:"); console.log( data ); }); return false; } </script> </form> </body> </html>
Итак, в php тоже я изменил файл upload_file на файлы. PHP-код в mailattach такой же, как вы предоставили