IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

PJ mail vide [19c]


Sujet :

Oracle

  1. #1
    Membre confirmé
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Octobre 2017
    Messages : 53
    Par défaut PJ mail vide
    Bonjour,

    Je n'arrive pas à avoir le contenu de ma PJ (fichier résultat SQL fait par spool).

    La PJ est vide, alors que celle déposée sur mon serveur est bien renseignée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    DECLARE
      l_clob CLOB := 'Je vais y arriver';
      begin
    send_mail_bis_bis(p_to          => 'toto@gmail.com',
              p_from        => 'toto@gmail.com',
              p_subject     => 'résulta',
              p_text_msg    => 'Maintenant reste la requête à bien la mettre dedans :) ',
              p_attach_name => 'table.csv',
              p_attach_mime => '/home/oracle/pj',
              p_attach_clob => l_clob,
              p_smtp_host   => 'smtp.domaine.fr');
    EXCEPTION
    WHEN utl_smtp.Transient_Error OR utl_smtp.Permanent_Error then
    raise_application_error(-20000, 'Unable to send mail: '||sqlerrm);
     
    END;
    /
    Auriez-vous une idée ?

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 167
    Par défaut
    Bonjour,

    Tu reçois bien le mail?

  3. #3
    Membre confirmé
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Octobre 2017
    Messages : 53
    Par défaut
    Oui je reçois bien le mail avec les infos que j'écris dans mon appel à la procédure.

    La PJ contient le texte suivant : Je vais y arriver qui se trouve dans ma variable l_clob CLOB := 'Je vais y arriver';

  4. #4
    Membre confirmé
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Octobre 2017
    Messages : 53
    Par défaut
    En fouillant j'ai vu que les clob ne permettant pas d'envoyer les fichiers je passe donc avec un blob

    Mais problème j'ai une erreur (en amont j'ai corrigé ma procédure pour avoir le blob et non clob)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    DECLARE
    l_blob BLOB;
    l_file UTL_FILE.FILE_TYPE;
    l_buffer RAW(32767);
    l_amount BINARY_INTEGER := 32767;
    l_pos INTEGER := 1;
    BEGIN
    l_file := UTL_FILE.FOPEN('/home/oracle/pj', 'table.csv', 'rb');
    BEGIN
    UTL_FILE.GET_RAW(l_file, l_buffer, l_amount);
    DBMS_LOB.CREATETEMPORARY(l_blob, TRUE);
    DBMS_LOB.OPEN(l_blob, DBMS_LOB.LOB_READWRITE);
    WHILE l_amount > 0 LOOP
    DBMS_LOB.WRITE(l_blob, l_amount, l_pos, l_buffer);
    l_pos := l_pos + l_amount;
    UTL_FILE.GET_RAW(l_file, l_buffer, l_amount);
    END LOOP;
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    NULL;
    END;
    UTL_FILE.FCLOSE(l_file);
     
    send_mail_bis_bis(p_to => 'toto@gmail.com',
    p_from => 'toto@gmail.com',
    p_subject     => 'résulta',
    p_text_msg    => 'Maintenant reste la requête à bien la mettre dedans :) ',
    p_attach_name => 'table.csv',
    p_attach_mime => '/home/oracle/pj',
    p_attach_clob => l_clob,
    p_smtp_host   => 'smtp.domaine.fr');
    DBMS_LOB.CLOSE(l_blob);
    DBMS_LOB.FREETEMPORARY(l_blob);
    EXCEPTION
    WHEN utl_smtp.Transient_Error OR utl_smtp.Permanent_Error THEN
    raise_application_error(-20000, 'Unable to send mail: ' || sqlerrm);
    END;
    Problème j'ai cette erreur
    Rapport d'erreur -
    ORA-29280: objet de répertoire non valide
    ORA-06512: à "SYS.UTL_FILE", ligne 41
    ORA-06512: à "SYS.UTL_FILE", ligne 478
    ORA-06512: à ligne 8
    29280. 00000 - "invalid directory object"
    *Cause: A corresponding directory object does not exist.
    *Action: Correct the directory object parameter, or create a corresponding
    directory object with the CREATE DIRECTORY command.
    j'ai essayé de créer le directory en question /home/oracle/pj
    Mais je ne vois pas l'intérêt, qqun aurait-il une idée ?

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 167
    Par défaut
    Si tu reprends l'exemple que j'avais donné dans ce sujet (réponse #9):
    https://www.developpez.net/forums/d2...te-oracle-11g/

    Tu verras que pour du simple texte tu peux juste faire ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    -- Alimentation de la variable pièce jointe de type CLOB : on utilise simplement une phrase en guise de contenu
    v_clob_attachments.extend;
    v_clob_attachments(1) := mail_clob_attachment_typ('testfile.txt', 'text/plain', 'Test de fichier clob');
    Ca va créer la pièce jointe "testfile.txt" dont le contenu est "Test de fichier clob". Donc c'est juste du clob.

    Attention, c'est peut-être Google qui filtre ta pièce en fonction de l'extension, ça m'est déjà arrivé. Mets .txt pour voir si c'est pareil.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fichier Boite de reception.dbx fait 1.5Go mais boite mail vide
    Par alex_m94 dans le forum Outlook Express / Windows Mail
    Réponses: 5
    Dernier message: 19/02/2010, 00h45
  2. [OL-2007] Formulaire outlook mail vide
    Par lolo780 dans le forum Outlook
    Réponses: 0
    Dernier message: 23/03/2009, 14h00
  3. Réponses: 3
    Dernier message: 09/08/2007, 14h18
  4. [Mail] verifier les champs pour éviter le mail vide
    Par temperature dans le forum Langage
    Réponses: 5
    Dernier message: 04/05/2006, 11h26
  5. message avec modele outlook: recoit un mail vide
    Par cortex024 dans le forum Outlook
    Réponses: 1
    Dernier message: 06/03/2006, 09h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo