Ir para conteúdo
Fórum Script Brasil
  • 0

Erro em anexo com PDF


Tenko

Pergunta

Boa tarde pessoal, beleza?

Preciso de ajuda, fiz este script, funciona para enviar qualquer arquivo, menos PDF, podem me ajudar a saber onde esta errado por favor.

Abraços

public function montaEmailAnexo( $sPasta ) {

        $boundary = "XYZ-" . date ( "dmYis" ) . "-ZYX";

        $this->headers  = "From: {$this->de};"                              . "\n";
        $this->headers .= "MIME-Version: 1.0"                               . "\n";
        $this->headers .= "Content-Type: multipart/mixed;";
        $this->headers .= "boundary={$boundary}"                            . "\n";
        $this->headers .= "{$boundary}"                                     . "\r\n";

        $this->corpoMSG = "--$boundary"                                     . "\r\n";
        $this->corpoMSG .= "{$this->mensagem}"                              . "\r\n\r\n";
        $this->corpoMSG .= "$boundary"                                      . "\r\n";
        $this->corpoMSG .= "Content-Type: text/html; charset='iso-8859-1'"  . "\r\n";
        $this->corpoMSG .= "Content-Transfer-Encoding: quoted-printable"    . "\r\n";
        $this->corpoMSG .= "Content-description:Mail message body"          . "\r\n";
        $this->corpoMSG .= "Content-Transfer-Encoding: 8bits"               . "\r\n";
        $this->corpoMSG .= "--$boundary"                                    . "\r\n";

        $sType = ( in_array( $sPasta, array( '../Arquivos/Pedidos/', '../Arquivos/Trocas/' ) ) ) ? 'Application/pdf' : '';

        for($i = 0; $i < count ( $this->arquivos ); $i ++) {
            // [ 06/10/2011  13:44:47 ] Comentário : Abrindo a pasta onde os arquivos estão para gerar os anexos
            $oFp = fopen ( "{$sPasta}{$this->arquivos [$i]}", 'rb' );

            if( $oFp )
            {
                $fread = fread ( $oFp, filesize ( "{$sPasta}{$this->arquivos [$i]}" ) );

                // [ 06/10/2011  13:45:09 ] Comentário : Criptografando os anexos para não serem lidos por outra pessoa durante o processo de entrega
                $this->anexos    = base64_encode ( $fread );
                $this->anexos    = chunk_split( $this->anexos );

                $this->corpoMSG .= "Content-Type:{$sType}; name={$this->arquivos [$i]}"                  . "\r\n";
                $this->corpoMSG .= "Content-Transfer-Encoding: base64"                                   . "\r\n";
                $this->corpoMSG .= "Content-Disposition: attachment; filename={$this->arquivos [$i]}"    . "\r\n";
                $this->corpoMSG .= "{$this->anexos}"                                                     . "\n";
                $this->corpoMSG .= "--{$boundary}--"                                                     . "\r\n";
            }
            else
            {
                echo 'Erro ao abrir o arquivo...';
                return false;
            }

            fclose ( $oFp );
        }

        if (! @mail ( $this->para, $this->assunto, $this->corpoMSG, $this->headers )) {
            return false;
        } else {
            return true;
        }
    }

Antes que eu esqueça...

O erro que aparece é: Arquivo não pode ser aberto por estar danificado ou não foi decodificado corretamente

Editado por Tenko
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

E ai, beleza?

Então, o email chega, chega o anexo, mas quando tento abrir, olha ai:

O Adobe Reader não pode abrir 'nome_arq.pdf' porque não há suporte a esse tipo de arquivo ou ele foi danificado(por exemplo, foi enviado como anexo de e-mail e não foi decodificado corretamente)..

Palavra por palavra

Link para o comentário
Compartilhar em outros sites

  • 0

Blzera

Estranho Tenko, mais o tamanho do arquivo está igual?

Outra coisa, não consigo copilar o seu código aqui n otrabalho, porém no exemplo que te passei, já obtive sucesso utilizando ele, enviando pdfs, reparei algumas diferenças entre o seu código, só que eu não sei se pode ter influencia na codificação do email.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...