带附件的邮件由ajax + ajax动画发送

时间:2013-09-24 13:52:33

标签: php jquery ajax email

所以,让我们开始希望这场战斗的最后一集。到目前为止,你帮助了我很多,但我还有一个(希望是最后一个)问题。我通过ajax .load()加载表单并在load()中返回函数我有一个验证插件,它在submitHandler中另一个ajax通过带附件的电子邮件发送表单。

关于通过here

中的ajax发送附件的案例的解决方案

我想补充一点,当我在单独的页面中填写表单(在主版本中由ajax加载到竞赛者)时,表单发送带有附件的消息而不刷新网站 - 正如我想要的那样。但是当我发送之前由ajax加载的表单时,我收到此错误:

<br /> <b>Fatal error</b>: Uncaught exception 'phpmailerException' with message 'Invalid address: ' in /home/zizou/domains/zizou.linuxpl.info/public_html/extremetrans/PHPMailer/class.phpmailer.php:766 Stack trace: #0 /home/zizou/domains/zizou.linuxpl.info/public_html/extremetrans/PHPMailer/class.phpmailer.php(738): PHPMailer-&gt;addAnAddress('Reply-To', NULL, NULL) #1 /home/zizou/domains/zizou.linuxpl.info/public_html/extremetrans/mail-attachment.php(21): PHPMailer-&gt;addReplyTo(NULL, NULL) #2 {main} thrown in <b>/home/zizou/domains/zizou.linuxpl.info/public_html/extremetrans/PHPMailer/class.phpmailer.php</b> on line <b>766</b><br />

这里说清楚我的代码 ajax加载和返回函数:

//before that i have .click(function{ //and here is var destination defined
$('#ajax').load(destination, 

        function() {
$("#formmail").validate({

    rules: {
        email: {
            required: true,
            email: true
        },
        name: {
            required: true

        }, 
        message: {
            required: true
        },
        uploaded_file: {
            required: true,
            extension: "pdf,doc,docx"
        }
    }, //koniec literału obiektowego rules
    messages: {
        email: {
            required: "<h3>Podaj adres e-mail.</h3>",
            email: "<h3>To nie jest prawidłowy <br>adres e-mail.</h3>"
        },
        name: {
            required: "<h3>Podaj swoje imię i nazwisko.</h3>"
        },
        message: {
            required: "<h3>Wpisz treść listu motywacyjnego.</h3>"
        },
        uploaded_file: {
            required: "<h3>Prześlij plik CV.</h3>",
            extension: "<h3>Możesz użyć jedynie plików:<br> doc, docx oraz pdf.</h3>"
        }
    },submitHandler: function(form) {


        var thisForm = $('#formmail');
        $('#formmail').fadeOut(function(){
            //Display the "loading" message
            $("#loading-mail").fadeIn(function(){


        var formData = new FormData(document.getElementById('formmail'));
                //Post the form to the send script
                $.ajax({
                    type: 'POST',
                    url: thisForm.attr("action"),
                    data: formData,
                    //Wait for a successful response
                    processData: false,  // tell jQuery not to process the data
                    contentType: false,   // tell jQuery not to set contentType
                    success: function(data){
                        //Hide the "loading" message
                        $("#loading-mail").fadeOut(function(){
                            //Display the "success" message
                            $("#success").text(data).fadeIn();
                        });
                    }
                });
            });
        });


    }

});  // koniec funkcji validate  

表单代码在这里:

<form method="post" name="formularzaplikacyjny" enctype="multipart/form-data" action="mail-attachment.php" id="formmail"> 

    <div id="imiediv"><label for="name">Imię i nazwisko: <em>*</em> </label><br>
                    <input type="text" name="name" id="name" class="required" title="Wpisz swoje imię i nazwisko" placeholder="Jan Kowalski"></div><br>

    <div id="emaildiv"><label for="email">Email: <em>*</em> </label><br>
                    <input type="text" name="email" class="required" id="email"  title="Wpisz swój adres email" placeholder="twoj_adres_email@email.com"></div><br>

    <div id="listdiv"><label for="message">List motywacyjny: <em>*</em></label><br>
                    <textarea name="message" rows="5" cols="48" class="required" id="message" title="Wpisz treść listu motywacyjnego"  placeholder="Tutaj zpowinna znaleźć się treść Twojego listu motywacyjnego" ></textarea></div>

    <div id="cvdiv"><label for="uploaded_file">Wybierz plik CV: <em>*</em></label><br>
                    <input type="file" name="uploaded_file" title="Wybierz plik CV do przesłania" class="required" id="uploaded_file"></div><br>

                    <input type="submit" value="Prześlij" name="submit" id="submitbutton">
                    </form>

                    <div id="loading-mail">
                        <h2>Wysyłamy maila.....</h2>
                      </div>
                      <div id="success">

                      </div>

和php脚本:

    <?php
require "PHPMailer/class.phpmailer.php";



$mail = new PHPMailer(true); //New instance, with exceptions enabled

$mail->CharSet = "UTF-8";
$bodys="<b>Podanie od:</b> ".$_POST['name']."<br/>"."<b>Adres e-mail: </b>".$_POST['email']."<br/>"."<b>Treść listu motywacyjnego: </b><br/>".$_POST['message'];
$mail->Body =$bodys; 

$mail->IsSMTP(); // tell the class to use SMTP
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Port = 25; // set the SMTP server port
$mail->Host = "mail.xxx.linuxpl.info"; // SMTP server
$mail->Username = "username"; // SMTP server username
$mail->Password = "pass"; // SMTP server password

$mail->IsSendmail(); // tell the class to use Sendmail

$mail->AddReplyTo($_POST['email'],$_POST['name']);

$mail->From = $_POST['email']; //uzupełnij sobie
$mail->FromName = $_POST['name']; //uzupełnij sobie

$to = 'xxx@gmail.com'; //na jaki mail wysłać np ala@wp.pl



$mail->AddAddress($to);

$mail->Subject = "Nowe podanie o pracę";

$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->WordWrap = 80; // set word wrap

$mail->MsgHTML($bodys);



$plik_tmp = $_FILES['uploaded_file']['tmp_name'];
$plik_rozmiar = $_FILES['uploaded_file']['size'];
$plik_nazwa = $_FILES['uploaded_file']['name'];
if(is_uploaded_file($plik_tmp)) {   
$nazwa_g=$plik_nazwa;

move_uploaded_file($plik_tmp, 'tmp_zal/'.$nazwa_g); 
$mail->AddAttachment('tmp_zal/'.$nazwa_g, $nazwa_g);
}





$mail->IsHTML(true); // send as HTML




if(!$mail->Send())
{
echo "Błąd";
echo "Kod błędu: " . $mail->ErrorInfo;
}
else
{
echo 'Wiadomość została wysłana';

}

?>

请再次帮助我们,超越我...

0 个答案:

没有答案