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

PL/SQL Oracle Discussion :

Send mail : plusieurs destinations


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de olivanto
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2005
    Messages
    513
    Détails du profil
    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2005
    Messages : 513
    Par défaut Send mail : plusieurs destinations
    bonjour,

    Un problème peut être très basique, mais que je n'arrive pas à résoudre :

    La procédure suivante permet d'envoyer un mail depuis Oracle, et fonctionne très bien...excepté si je spécifie plusieurs destinations (p_dest).

    Une idé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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    CREATE OR REPLACE procedure send_mail_4(
    p_exp IN OUT varchar2,
    p_dest IN OUT varchar2,
    p_obj IN OUT varchar2,
    p_msg IN OUT varchar2)
    IS
    v_cnx utl_smtp.connection;
    v_smtp_srv varchar2(200):= 'smtp.coucou.com';
    v_port pls_integer:=25;
    v_msg varchar2(32000);
    BEGIN
    v_cnx:=utl_smtp.open_connection(v_smtp_srv,v_port);
    utl_smtp.HELO(v_cnx,v_smtp_srv);
    utl_smtp.MAIL(v_cnx,p_exp);
    utl_smtp.RCPT(v_cnx,p_dest);
    v_msg:= 'MIME-Version: 1.0' || utl_tcp.CRLF 
    || 'Content-type: text/html;charset="iso-8859-15";'
    || 'Content-Transfer-Enconding: 8bit' || utl_tcp.CRLF 
    || 'date:'||TO_CHAR(sysdate,'dd mon yyyy hh24:mi:ss')||utl_tcp.CRLF
    || 'from:'||p_exp||utl_tcp.CRLF
    || 'subject:'||p_obj||utl_tcp.CRLF
    || 'to:'||p_dest||utl_tcp.CRLF
    || ''||utl_tcp.CRLF
    || p_msg||utl_tcp.CRLF||'';
     
    utl_smtp.DATA(v_cnx,v_msg);
    utl_smtp.quit(v_cnx);
     
    EXCEPTION
    WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
      utl_smtp.quit(v_cnx);
      raise_application_error(-20000,'Erreur send_mail:'||sqlerrm);
     END;
    /

  2. #2
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    soit tu pars d'un boucle for

    soit tu peux utiliser utl_mail a partir de oracle 10G

    http://download.oracle.com/docs/cd/B...l.htm#BABDEAJF

  3. #3
    Membre éclairé Avatar de olivanto
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2005
    Messages
    513
    Détails du profil
    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2005
    Messages : 513
    Par défaut
    je suis malheuresement en 9i.

    Mais pourquoi une boucle ? Mon champ en Varchar2 devrait pouvoir contenir plusieurs adresses, non ?

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611

  5. #5
    Membre éclairé Avatar de olivanto
    Responsable d'exploitation informatique
    Inscrit en
    Mars 2005
    Messages
    513
    Détails du profil
    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2005
    Messages : 513
    Par défaut
    Tout d'abord ; merci !

    Bon, malheuresement, je ne trouve pas mon bonheur mais un début d'explication dans cette fonction :

    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
     8  function address_email( p_string in varchar2,
      9                          p_recipients in array ) return varchar2
     10  is
     11      l_recipients long;
     12  begin
     13     for i in 1 .. p_recipients.count
     14     loop
     15        utl_smtp.rcpt(g_mail_conn, p_recipients(i) );
     16        if ( l_recipients is null )
     17        then
     18            l_recipients := p_string || p_recipients(i) ;
     19        else
     20            l_recipients := l_recipients || ', ' || p_recipients(i);
     21        end if;
     22     end loop;
     23     return l_recipients;
     24  end;
     25
     26
    Là où Tom nous fait un tableau d'adresses, séparées par une virgule. Je connaissais cette histoire de virgule, sans suççès pourtant.
    Ce qui me surprend, c'est que tout çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     l_recipients := l_recipients || ', ' || p_recipients(i);
    est renvoyé en varcha2. Comme chez moi, donc.

    Du coup, on pourrait devrait pouvoir écrire (??)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     l_recipients := adresse1@coucou.com || ', ' || adresse2@coucou.com
    La format est donc là.

    Mais pourquoi cela ne marche pas chez moi, qui utilise ce système là ?



  6. #6
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Here is where it differs, instead of calling UTL_SMTP.RCPT once ? it uses are
    address_email function to call it potentially many times, building the "To:" and "Cc:"
    list for us as well. It builds the BCC list but we won?t actually send that (we don?t
    want the recipients to see that list!)

    55 l_to_list := address_email( 'To: ', p_to );
    56 l_cc_list := address_email( 'Cc: ', p_cc );
    57 l_bcc_list := address_email( 'Bcc: ', p_bcc );

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

Discussions similaires

  1. send Mail via JSP et Servlet
    Par sovop dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 08/10/2006, 16h22
  2. [Mail] Send Mail + lien
    Par cinc dans le forum Langage
    Réponses: 11
    Dernier message: 05/10/2006, 16h15
  3. Plusieurs destinations pour un même formulaire
    Par dessinateurttuyen dans le forum Langage
    Réponses: 14
    Dernier message: 01/08/2006, 14h13
  4. Send mail / SMTP
    Par malmzi2007 dans le forum Zope
    Réponses: 8
    Dernier message: 28/07/2006, 07h57
  5. [Mail] Plusieurs destinataires fonction mail
    Par Jiraiya42 dans le forum Langage
    Réponses: 8
    Dernier message: 27/04/2006, 23h00

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