PHPMailer的`Body`没有做任何事

时间:2015-11-23 21:41:25

标签: javascript php jquery ajax phpmailer

我需要发送带附件的电子邮件,我选择了PHPMailer。我发现我必须使用Body来使附件正常工作,但我的问题是,如果我使用它,则会重新加载表单并检查是否已发送电子邮件的if条件。表单重新加载并且没有发生任何事情,它甚至没有重置JavaScript文件中包含的表单。

使用FormData允许我使用Ajax上传文件:

$(document).ready(function() {
    $('#FormularioContato').on('submit', function(e) {
        e.preventDefault();
        var formData = new FormData($(this)[0]);

        $.ajax({
            type: 'POST',
            url: 'enviar.php',
            dataType: 'json',
            contentType: false,
            processData: false,
            async: false,
            cache: false,
            data: formData,
            success: function (data) {
                if (data.tipo !== 'Erro') {
                    $("#FormularioContato")[0].reset();
                    $('#Msg').hide().removeClass().addClass(data.tipo).html(data.msg).fadeIn('slow').delay(7000).fadeOut('slow');
                } else {
                    $('#Msg').hide().removeClass().addClass(data.tipo).html(data.msg).fadeIn('slow').delay(7000).fadeOut('slow');
                }
            }
        });
    });
});

这是使用PHPMailer发送电子邮件的代码:

$mensagem = '';
$mensagem .= 'Nome: ' . $_post['Nome'];
$mensagem .= 'Email: ' . $_post['Email'];
$mensagem .= 'Telefone Residencial: ' . $_post['Telefone Residencial'];
$mensagem .= 'Telefone Celular: ' . $_post['Telefone Celular'];
$mensagem .= 'Mensagem: ' . $_post['Mensagem'];

$extensoes = array('pdf', 'doc', 'docx');
$extensaoArquivo = pathinfo($_FILES['Arquivo']['name'], PATHINFO_EXTENSION);
$novoNomeArquivo = strtolower(str_replace(' ', '_', $_post['Nome']) . '.' . $extensaoArquivo);

if (in_array($extensaoArquivo, $extensoes)) {
    if (move_uploaded_file($_FILES['Arquivo']['tmp_name'], 'uploads/' . $novoNomeArquivo)) {
        $mailer->ContentType = "Content-type: text/html; charset=utf-8";
        $mailer->setFrom($_post['Email'], $_post['Nome']);
        $mailer->addAddress("email@example.com");
        $mailer->Subject = 'Trabalhe conosco - ' . $_post['Nome'];
        $mailer->isHTML(true)
        $mailer->Body($mensagem);
        $mailer->addAttachment($_FILES['Arquivo']['tmp_name'], $_FILES['Arquivo']['name']);

        if ($mailer->send()) {
            echo json_encode(array(
                'tipo' => 'Sucesso',
                'msg' => 'Mensagem enviada com sucesso.'
            ));
        } else {
            echo json_encode(array(
                'tipo' => 'Erro',
                'msg' => 'Ocorreu um erro ao enviar o e-mail.' . $mailer->ErrorInfo
            ));
        }
    } else {
        echo json_encode(array(
            'tipo' => 'Erro',
            'msg' => 'Ocorreu um erro ao enviar o anexo'
        ));
    }
} else {
    echo json_encode(array(
        'tipo' => 'Erro',
        'msg' => 'Arquivo de anexo inválido. Somente PDF, DOC ou DOCX'
    ));
}

0 个答案:

没有答案