meu procedimento em banco de dados oracle esta enviado email com pdf, porem os pdf estao indo corrompidos,oque fazer?

junior diniz 0 Pontos de reputação
2024-06-12T19:57:23.4566667+00:00

tenho uma procedure em banco de dados oracle que dispara email para clientes, nesse email tem um pdf de anexo, porem quando o cliente recebe esse email com pfd, ao abrir ele recebe uma msg dizendo que o pdf esta corrompido, porem o mesmo email eu recebo e o pdf abre normal, estou recebendo esse email pelo localweb e o cliente pelo outlook. alguem pode me ajudar?

SQL Server
SQL Server
Uma família de sistemas de gerenciamento e análise de banco de dados relacional da Microsoft para soluções de comércio eletrônico, linha de negócios e data warehouse.
64 perguntas
0 comentários Sem comentários
{count} votos

3 respostas

Classificar por: Mais útil
  1. Jonathan Pereira Castillo 10,505 Pontos de reputação Fornecedor da Microsoft
    2024-08-27T17:43:30.52+00:00

    Oi junior diniz!

    Bem-vindo ao Microsoft Q&A!

    Entendo a frustração com esse problema. Aqui estão algumas sugestões para resolver a questão dos PDFs corrompidos:

    Codificação do Anexo:

    • Verifique se o PDF está sendo codificado corretamente antes de ser anexado ao e-mail. Utilize a codificação base64 para garantir que o arquivo não seja corrompido durante o envio.
    1. Ferramentas de Envio de E-mail:
    • Certifique-se de que está utilizando a package correta para enviar e-mails no Oracle. A package UTL_SMTP é recomendada para enviar e-mails com anexos maiores e mais complexos. Aqui está um exemplo básico de como enviar um e-mail com anexo usando UTL_SMTP:
      SQL
           DECLARE
             l_mail_conn UTL_SMTP.connection;
             l_boundary  VARCHAR2(50) := '----=_NextPart_000_001';
             l_raw       RAW(32767);
             l_blob      BLOB;
             l_clob      CLOB;
           BEGIN
             l_mail_conn := UTL_SMTP.open_connection('smtp.seuservidor.com', 25);
             UTL_SMTP.helo(l_mail_conn, 'seuservidor.com');
             UTL_SMTP.mail(l_mail_conn, 'seuemail@seuservidor.com');
             UTL_SMTP.rcpt(l_mail_conn, 'cliente@servidor.com');
             UTL_SMTP.open_data(l_mail_conn);
             UTL_SMTP.write_data(l_mail_conn, 'From: seuemail@seuservidor.com' || UTL_TCP.crlf);
             UTL_SMTP.write_data(l_mail_conn, 'To: cliente@servidor.com' || UTL_TCP.crlf);
             UTL_SMTP.write_data(l_mail_conn, 'Subject: Teste de PDF' || UTL_TCP.crlf);
             UTL_SMTP.write_data(l_mail_conn, 'MIME-Version: 1.0' || UTL_TCP.crlf);
             UTL_SMTP.write_data(l_mail_conn, 'Content-Type: multipart/mixed; boundary="' || l_boundary || '"' || UTL_TCP.crlf || UTL_TCP.crlf);
             UTL_SMTP.write_data(l_mail_conn, '--' || l_boundary || UTL_TCP.crlf);
             UTL_SMTP.write_data(l_mail_conn, 'Content-Type: text/plain' || UTL_TCP.crlf || UTL_TCP.crlf);
             UTL_SMTP.write_data(l_mail_conn, 'Este é um e-mail de teste com anexo PDF.' || UTL_TCP.crlf || UTL_TCP.crlf);
             UTL_SMTP.write_data(l_mail_conn, '--' || l_boundary || UTL_TCP.crlf);
             UTL_SMTP.write_data(l_mail_conn, 'Content-Type: application/pdf; name="teste.pdf"' || UTL_TCP.crlf);
             UTL_SMTP.write_data(l_mail_conn, 'Content-Transfer-Encoding: base64' || UTL_TCP.crlf);
             UTL_SMTP.write_data(l_mail_conn, 'Content-Disposition: attachment; filename="teste.pdf"' || UTL_TCP.crlf || UTL_TCP.crlf);
             -- Aqui você deve converter o PDF para base64 e escrever os dados
             UTL_SMTP.write_data(l_mail_conn, 'JVBERi0xLjQKJcfsj6IKNSAwIG9iago8PC9UeXBlIC9QYWdl' || UTL_TCP.crlf); -- Exemplo de dados base64
             UTL_SMTP.write_data(l_mail_conn, '--' || l_boundary || '--' || UTL_TCP.crlf);
             UTL_SMTP.close_data(l_mail_conn);
             UTL_SMTP.quit(l_mail_conn);
           END;
           
      

    Verificação de Integridade do PDF:

    • Antes de enviar o PDF, verifique se ele está íntegro e pode ser aberto corretamente. Isso pode ser feito abrindo o arquivo localmente antes de anexá-lo ao e-mail. Diferenças de Cliente de E-mail:
    • Como você mencionou que o PDF abre corretamente no Localweb, mas não no Outlook, pode haver diferenças na forma como esses clientes de e-mail processam anexos. Certifique-se de que o PDF está sendo enviado com os cabeçalhos MIME corretos. Consultoria com o Suporte:
    • Se o problema persistir, considere entrar em contato com o suporte do Oracle ou do cliente de e-mail para obter assistência específica.

    Espero que essas dicas ajudem a resolver o problema! Se precisar de mais assistência, estou à disposição.

    Saudações

    Jonathan.

    -----------

    Se você acha que as informações fornecidas acima resolveram sua dúvida, agradeceríamos se você pudesse marcá-la como "Aceite a resposta se achar útil". Isso nos ajuda a manter a qualidade e a relevância das soluções em nosso fórum.

    0 comentários Sem comentários

  2. Jonathan Pereira Castillo 10,505 Pontos de reputação Fornecedor da Microsoft
    2024-10-08T17:47:57.02+00:00

    Oi junior diniz!,

    O objetivo desta mensagem é verificar as informações fornecidas. Se tiver mais atualizações sobre este assunto, por favor, não hesite em responder neste mesmo tópico.

    Cuidadosamente                 

    Jonathan

    -----------

    Se você acha que as informações fornecidas acima resolveram sua dúvida, agradeceríamos se você pudesse marcá-la como "Aceite a resposta se achar útil". Isso nos ajuda a manter a qualidade e a relevância das soluções em nosso fórum.

    0 comentários Sem comentários

  3. Jonathan Pereira Castillo 10,505 Pontos de reputação Fornecedor da Microsoft
    2024-11-15T16:44:31.54+00:00

    Bom dia junior diniz!,

    Conforme as informações anteriormente fornecidas, o objetivo desta mensagem é realizar uma verificação das mesmas. Caso possua novas atualizações referentes a este assunto, por favor, sinta-se à vontade para responder neste mesmo tópico.

    Atenciosamente,

    Jonathan

    -----------

    Sua opinião é muito importante para nós! Se esta resposta resolveu sua consulta, por favor clique em ‘YES‘. Isso nos ajuda a melhorar continuamente a qualidade e relevância de nossas soluções. Obrigado pela sua colaboração!

    0 comentários Sem comentários

Sua resposta

As respostas podem ser marcadas como Respostas Aceitas pelo autor da pergunta, o que ajuda os usuários a saber a resposta que resolveu o problema do autor.