Jump to content
Fórum Script Brasil
  • 0

Erro em anexo com PDF


Tenko

Question

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

Edited by Tenko
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...