使用AJAX和PHPMailer发送邮件时出错

时间:2017-03-14 20:26:49

标签: javascript php jquery ajax email

我遇到了一个问题。我想用PHPMailer发送邮件,但是我通过jQuery AJAX传递了表单中的值。但是当邮件发送时,我收到的电子邮件中没有我通过AJAX传递的信息。

这是我的JS代码:

$.ajax({
            url: post_url,
            type: request,

            data: {
                ime: ucenikOdabrao.ime,
                email: ucenikOdabrao.email,
                broj: ucenikOdabrao.broj,
                grad: ucenikOdabrao.grad,
                pol: ucenikOdabrao.pol,
                studij: ucenikOdabrao.studij,
                faks: ucenikOdabrao.faks,
                univerziteti: ucenikOdabrao.univerziteti,
                dokumenti: ucenikOdabrao.dokumenti
            },
            contentType: false,       // The content type used when sending data to the server.
            cache: false,             // To unable request pages to be cached
            processData:false, 
            dataType: "json"
        }).done(function(res){
            if(res.type == "error"){
                alert(res.text);
            }
            if(res.type == "done"){
                alert(res.text);
            }
        })     

我打印出了对象ucenikOdabrao,它在我的控制台中完全打印出所有数据。

这是我的PHP代码:

    require "PHPMailer-master/PHPMailerAutoload.php";
    header('Content-Type: application/json');

    $ime = $_POST["ime"];
    $email = $_POST["email"];
    $broj = $_POST["broj"];
    $grad = $_POST["grad"];
    $pol = $_POST["pol"];
    $studij = $_POST["studij"];
    $faks = $_POST["faks"];
    $univerziteti = $_POST["univerziteti"];

    $dokumenti = $_FILES["dokumenti"];
    $dokumenti_count = count($dokumenti['name']);

    $subject = "Aplikacija za faks - ".$ime;

    $body = "Prijava za faks - ".$ime."\n";
    $body .= "Email: ".$email."\n";
    $body .= "Broj: ".$broj."\n";
    $body .= "Grad: ".$grad."\n";
    $body .= "Pol: ".$pol."\n";
    $body .= "Studij: ".$studij."\n";
    $body .= "Faks na koji aplicira: ".$faks."\n";

    $body .= "Univerziteti na koje aplicira: ".$univerziteti."\n";


    for($x = 0; $x < $dokumenti_count; $x++){
        if(!empty($dokumenti['name'][$x])){

            if($dokumenti['error'][$x]>0){
                print json_encode("Došlo je do greške! Molimo pokušajte ponovo!");
                exit;
            }

            $file_name = $dokumenti['name'][$x];
            $file_size = $dokumenti['size'][$x];
            $file_type = $dokumenti['type'][$x];

            // Čitamo fajl bajo moj
            $handle = fopen($dokumenti['tmp_name'][$x], "r");
            $content = fread($handle, $file_size);
            fclose($handle);

            $encoded_content = chunk_split(base64_encode($content));

            $body .="Content-Type: $file_type; name=".$file_name."\r\n";
            $body .="Content-Disposition: attachment; filename=".$file_name."\r\n";
            $body .="Content-Transfer-Encoding: base64\r\n";
            $body .="X-Attachment-Id: ".rand(1000,99999)."\r\n\r\n"; 
            $body .= $encoded_content; 

        }   
    }

    $mail = new PHPMailer();

    $mail->isSMTP();
    $mail->SMTPDebug = 1;
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = 'ssl';
    $mail->Host = "smtp.gmail.com";
    $mail->Port = 465;
    $mail->isHTML(true);
    $mail->Username = "cccc@gmail.com";
    $mail->Password = "passs";
    $mail->SetFrom("cccc@gmail.com");
    $mail->Subject = $subject;
    $mail->Body = $body;
    $mail->AddAddress("dddd@gmail.com");

    if(!$mail->Send()){
        print json_encode(array('type'=>'error', 'text' => 'Došlo je do greške. Molimo pokušajte kasnije!'));  
        exit;        
    } else{
        print json_encode(array('type'=>'done', 'text' => 'Vaša aplikacija je uspješno poslata!'));
        exit;    
    }

我也有一个问题,我无法在jQuery AJAX函数中获得任何响应。我只是看不出问题出在哪里:/

0 个答案:

没有答案