我创建了一个程序来发送带附件的电子邮件。首先,我创建它没有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';
}
?>
答案 0 :(得分:0)
这是我的实施。我改变了一些属性。但请注意,为了我的目的,我将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更改为文件。 mailattach中的php代码与您提供的相同