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

Forms Oracle Discussion :

Forms 10g, webutil et envoie d'un courriel via Outlook


Sujet :

Forms Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Par défaut Forms 10g, webutil et envoie d'un courriel via Outlook
    Bonjour.

    J'utilise les fonctions client_ole2 pour l'envoie d'un courriel en utilisant Outlook.
    Le courriel est bien initialisé et tout fonctionne correctement jusqu'au moment où j'ordonne l'envoie en utilisant le paramère 'Send' pour envoyer le courriel. Le courriel n'est pas expédié et malheureusement, le courriel reste dans la Boite Brouillon.

    Voici donc une brève description du problème.

    Dans le code suivant (En particulier les dernières lignes où le 'Send' est executé), y-as-t-il une erreur?

    NOTE : Juste avant le 'Send', il y a une sauvegarde par la commande 'Save'. Cette dernière fait en sorte que le courriel est sauvegardé dans la boite brouillon. Est-ce cela qui cause le problème?

    J'ai évidemment essayé l'envoie sans le code pour effectuer le 'Save' et l'envoi ne se déclenche pas

    Merci beaucoup

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    DECLARE
     
    v_destinataire   VARCHAR2(4000);
     
    /*  declaration des variable object propre à Outlook */
     
    application    client_ole2.OBJ_TYPE;
    hMailItem      client_ole2.OBJ_TYPE;
    hRecipients    client_ole2.OBJ_TYPE;
    recipient      client_ole2.OBJ_TYPE;
     
    /*  declaration de la liste d'argument */
     
    args           client_ole2.LIST_TYPE;
    msg_attch      client_ole2.OBJ_TYPE;
     
    PROCEDURE lier_fichier_joint_p (p_fichier  IN VARCHAR2,
                                    p_position IN NUMBER) IS
     
    des        VARCHAR2(80) := 'FILE_NAME';
    attachment client_ole2.OBJ_TYPE;
     
    BEGIN
     
       args := client_ole2.CREATE_ARGLIST;
       client_ole2.ADD_ARG (args, p_fichier);
       attachment := client_ole2.INVOKE_OBJ (msg_attch, 'Add', args);
       client_ole2.destroy_arglist (args);
       client_ole2.SET_PROPERTY (attachment, 'name',     des);
       client_ole2.SET_PROPERTY (attachment, 'position', p_position);
       client_ole2.SET_PROPERTY (attachment, 'type',     1);
       client_ole2.SET_PROPERTY (attachment, 'source',   p_fichier);
       args := client_ole2.CREATE_ARGLIST;
       client_ole2.ADD_ARG (args, p_fichier);
       client_ole2.INVOKE (attachment, 'ReadFromFile', args);
       client_ole2.DESTROY_ARGLIST (args);
     
    END;
     
    BEGIN
    /*  create the Application Instance*/
     
       application := client_ole2.create_obj ('Outlook.Application');
     
       args := client_ole2.create_arglist;
       client_ole2.add_arg (args, 0);
       hMailItem := client_ole2.invoke_obj (application, 'CreateItem', args);
       client_ole2.destroy_arglist (args);
       msg_attch := client_ole2.GET_OBJ_PROPERTY (hMailItem, 'Attachments');
     
    --  Attacher les fichiers nécessaires
     
       lier_fichier_joint_p(:suivi.w_fichier, 1);
       IF :suivi.pj1 IS NOT NULL THEN
          lier_fichier_joint_p(:suivi.pj1, 2);
       END IF;
       IF :suivi.pj2 IS NOT NULL THEN
          lier_fichier_joint_p(:suivi.pj2, 2);
       END IF;
       IF :suivi.pj3 IS NOT NULL THEN
          lier_fichier_joint_p(:suivi.pj3, 2);
       END IF;
     
     
    /* Get the Recipients property of the MailItem object:
       Returns a Recipients collection that represents all the Recipients for the Outlook item */
     
       args := client_ole2.create_arglist;
       hRecipients := client_ole2.get_obj_property (hMailItem, 'Recipients', args);
       client_ole2.destroy_arglist (args);
     
       v_destinataire := NULL;
       go_block ('INDIVIDU');
       first_record;
     
       LOOP
          IF :individu.couriel IS NOT NULL THEN
             IF :individu.choix = 'A' THEN
     
    /*          Use the Add method to create a recipients Instance and add it to the Recipients collection */
     
                args := client_ole2.create_arglist;
                client_ole2.add_arg (args, :individu.couriel);
                recipient := client_ole2.invoke_obj (hRecipients, 'Add', args);
     
    /*          put the property Type of the recipient Instance  to value needed (0=Originator,1=To,2=CC,3=BCC) */
     
                client_ole2.set_property (recipient, 'Type', 3);
                client_ole2.destroy_arglist (args);
                IF v_destinataire IS NOT NULL THEN
                   v_destinataire := v_destinataire||','||:individu.couriel;
                ELSE
                   v_destinataire := :individu.couriel;
                END IF;
             END IF;
          END IF;
     
          EXIT WHEN :SYSTEM.last_record = 'TRUE';
     
          next_record;
     
       END LOOP;
     
    -- Passer les valeur pour mettre à jour le suivi
     
       :suivi.destinataire   := v_destinataire;
     
    /* Resolve the Recipients collection*/
     
       args := client_ole2.create_arglist;
       client_ole2.invoke (hRecipients, 'ResolveAll', args);
     
    /* set les propriétés Subject and Body*/
     
       client_ole2.set_property (hMailItem, 'Subject', :suivi.objet);
       client_ole2.set_property (hMailItem, 'Body',    :suivi.description);
     
     
    /* Sauvegarde du courriel*/
     
       client_ole2.invoke (hMailItem, 'Save', args);
       client_ole2.destroy_arglist (args);
     
    /* Envoie du courriel*/
     
       args:=client_ole2.create_arglist;
       client_ole2.invoke (hMailItem, 'Send', args);
       client_ole2.destroy_arglist (args);
     
    /* Release all Instances*/
     
       client_ole2.release_obj (application);
       client_ole2.release_obj (hRecipients);
       client_ole2.release_obj (recipient);
       client_ole2.release_obj (hMailItem);
     
    END;

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Par défaut
    Bonjour

    Comme je n'ai pas eu de commentaire peut-être qu'a priori, il s'agit d'un problème technique.

    Est-ce que quelqu'un pourrait me confirmer si le code est correct?

    Cela permettra de mettre l'emphase sur le coté technique.

    (En 6i tout fonctionne correctement. C'est sous 10g que le 'send' ne se déclenche pas)

    Merci beaucoup à tous.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Par défaut
    Problème résolu

    Dans le programme, il y a un exit-form après l'envoie du courriel et seul la première alerte (aux nombre de 2) lancé par Outlook était effectué.
    Ces alertes prévient que
    1 - un programme veut accéder aux carnet d'adresses
    2 - un programme tente d'envoyer automatiquement un courriel

    À la réponse de la première alerte, le serveur retourne la tâche avec un status de compléter et le exit_form est alors exécuté sans que l'usager ne voit la seconde alerte de Outlook. Le message est alors conservé dans la boite Brouillon.

    L'appel d'un timer (1 millisecond) juste avant le exit_form corrige la situation. Les 2 alertes de outlook doivent être répondu avant que le contrôle ne revienne au module et de l'appel au exit-form.

    En espérant que cela soit utile à quelqu'un d'autre.

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

Discussions similaires

  1. [AC-2007] Envoie d'un courriel via une macro
    Par Line dans le forum Access
    Réponses: 8
    Dernier message: 28/07/2010, 18h33
  2. Réponses: 4
    Dernier message: 02/02/2009, 23h40
  3. Envoi d'un mail via outlook avec l'option de vote
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/03/2008, 12h23
  4. Envoi d'un message via outlook
    Par STOUPI dans le forum Access
    Réponses: 1
    Dernier message: 06/06/2006, 15h42

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