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

SQL Oracle Discussion :

utl_smtp, envoie de mail


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 6
    Par défaut utl_smtp, envoie de mail
    bonjour, j'essai desesperement d'envoyer un mail via une procedure sous oracle.

    voici mon code :

    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
     
    create or replace procedure p5_mail(dest in varchar2,sujet in varchar2,text in varchar2)
    is
    serveursmtp varchar2(100) := 'smtp.wanadoo.fr';
    cnx utl_smtp.connection;
    exp varchar2(100) := 'mjabourgeais@wanadoo.fr';
    procedure send_header(name in varchar2,header in varchar2) as
    begin
      utl_smtp.write_data(cnx,name || ': ' || header || utl_tcp.crlf);
      dbms_output.put_line(header);
    end;
     
    begin 
    cnx := utl_smtp.open_connection(serveursmtp);
    utl_smtp.helo(cnx,serveursmtp);
    utl_smtp.mail(cnx,exp);
    utl_smtp.rcpt(cnx,dest);
    utl_smtp.open_data(cnx);
    send_header('FROM' , exp);
    send_header('TO', dest);
    send_header('SUBJECT', sujet);
    utl_smtp.write_data(cnx,utl_tcp.crlf||text);
    utl_smtp.close_data(cnx);
    utl_smtp.quit(cnx);
    end;
    je n'ais pas d'erreur , la procédure se créée sans erreur.
    au moment de l'appel de la procédure pour envoyer le mail, j'ai cette erreur :
    ERREUR à la ligne 1 :
    ORA-29279: erreur permanente SMTP : 501 Bad address syntax
    ORA-06512: à "SYS.UTL_SMTP", ligne 17
    ORA-06512: à "SYS.UTL_SMTP", ligne 98
    ORA-06512: à "SYS.UTL_SMTP", ligne 221
    ORA-06512: à "MELANIE.P5_MAIL", ligne 15
    ORA-06512: à ligne 1
    j'ai rechercher sur toutes les doc, et je ne comprend pas pourquoi j'ai cette erreur, est ceq ue cela peut venir d'une configurationsous oracle, et comment faire, si vous avez la réponse!
    merci d'avance!

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2003
    Messages : 412
    Par défaut
    Petite question préliminaire tu veux envoyer des emails text ou html??

    de plus il te manque le port SMTP j'ai l'impression

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 6
    Par défaut
    meme avec le port 25 ca ne marche pas!
    c'est pour envoyer du text!

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Pourrais tu mettre le code que tu utilises pour exécuter la procédure ?

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 6
    Par défaut
    exec p5_mail('melaniefriart@hotmail.com','sujet','blabla');

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 64
    Par défaut
    Bonjour,

    questions bêtes : est-il possible d'utiliser 'smtp.wanadoo.fr' pour envoyer des mails depuis autre chose qu'un client mail ? et surtout depuis oracle ? ne faut-il pas disposer de son propre serveur smtp ?

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2003
    Messages : 412
    Par défaut
    depuis Oracle non par contre il faut un serveur smtp qui autorise les envoies de mail

    C'est la config que j'ai au boulot

    j'envoie des mails html depuis ma base en passant par la passerelle smtp de mon boulot.

    Par contre je suis pas sur que la passerelle smtp autorise ce genre de chose

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 6
    Par défaut
    et je dois faire comment, alors pour avoir une passerelle, ou pour pouvoir envoyer des mails?

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2003
    Messages : 412
    Par défaut
    oula bah déja tu peux aller demander à ton admin système si il veux bien autoriser ton serveur à envoyer des mails à travers sa passerelle smtp

  10. #10
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 6
    Par défaut
    je boss chez moi, je suis étudiante et je prepare des activités pour passer mon exam, et je trouve pas toute les solution, c'est pour cela que je fais appel a vous

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2003
    Messages : 412
    Par défaut
    oki

    bon je vais chercher dans mon code ma procédure d'envoie de mail qui marche de manière sure et certaine. Je te la collerai ici afin que tu puisses la tester chez toi afin de supprimer tout doute venant du code. (bien que le tien semble fonctionner)

    Le problème est de voir si la passerelle smtp wanadoo autorise ce genre d'action

  12. #12
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 6
    Par défaut
    ok ,merci beaucoup. lors d'une application .net, j'ai mis aussi pour l'envoi de mail cette passerelle et cela fonctionne correctement!

  13. #13
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2003
    Messages : 412
    Par défaut
    Ouf voici enfin le code

    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
    PROCEDURE html_email(p_to            IN VARCHAR2,
                           p_from          IN VARCHAR2,
                           p_subject       IN VARCHAR2,
                           p_text          IN VARCHAR2 DEFAULT NULL,
                           p_html          IN VARCHAR2 DEFAULT NULL,
                           p_smtp_hostname IN VARCHAR2,
                           p_smtp_portnum  IN VARCHAR2) IS
        l_boundary   VARCHAR2(255) DEFAULT 'a1b2c3d4e3f2g1';
        l_connection utl_smtp.connection;
        l_body_html  CLOB := empty_clob; 
        l_offset     NUMBER;
        l_ammount    NUMBER;
        l_temp       VARCHAR2(32767) DEFAULT NULL;
        l_dest       VARCHAR2(32767);
        l_dest_tmp   VARCHAR2(32767);
      BEGIN
        l_dest       := p_to;
        l_connection := utl_smtp.open_connection(p_smtp_hostname, p_smtp_portnum);
        utl_smtp.helo(l_connection, p_smtp_hostname);
        utl_smtp.mail(l_connection, p_from);
        WHILE instr(l_dest, ',') != 0 LOOP
          l_dest_tmp := substr(l_dest, 1, instr(l_dest, ',') - 1);
          l_dest     := substr(l_dest, instr(l_dest, ',') + 1);
          utl_smtp.rcpt(l_connection, l_dest_tmp);
        END LOOP;
        utl_smtp.rcpt(l_connection, l_dest);
        l_temp := l_temp || 'MIME-Version: 1.0' || chr(13) || chr(10);
        l_temp := l_temp || 'To: ' || p_to || chr(13) || chr(10);
        l_temp := l_temp || 'From: ' || p_from || chr(13) || chr(10);
        l_temp := l_temp || 'Subject: ' || p_subject || chr(13) || chr(10);
        l_temp := l_temp || 'Reply-To: ' || p_from || chr(13) || chr(10);
        l_temp := l_temp || 'Content-Type: multipart/alternative; boundary=' ||
                  chr(34) || l_boundary || chr(34) || chr(13) || chr(10);
        dbms_lob.createtemporary(l_body_html, FALSE, 10);
        dbms_lob.WRITE(l_body_html, length(l_temp), 1, l_temp);
        l_offset := dbms_lob.getlength(l_body_html) + 1;
        l_temp   := '--' || l_boundary || chr(13) || chr(10);
        l_temp   := l_temp || 'content-type: text/plain; charset=windows-1252' ||
                    chr(13) || chr(10) || chr(13) || chr(10);
        dbms_lob.WRITE(l_body_html, length(l_temp), l_offset, l_temp);
        l_offset := dbms_lob.getlength(l_body_html) + 1;
        dbms_lob.WRITE(l_body_html, length(p_text), l_offset, p_text);
        l_temp   := chr(13) || chr(10) || chr(13) || chr(10) || '--' ||
                    l_boundary || chr(13) || chr(10);
        l_temp   := l_temp || 'content-type: text/html; charset=windows-1252' ||
                    chr(13) || chr(10) || chr(13) || chr(10);
        l_offset := dbms_lob.getlength(l_body_html) + 1;
        dbms_lob.WRITE(l_body_html, length(l_temp), l_offset, l_temp);
        l_offset := dbms_lob.getlength(l_body_html) + 1;
        dbms_lob.WRITE(l_body_html, length(p_html), l_offset, p_html);
        l_temp   := chr(13) || chr(10) || '--' || l_boundary || '--' || chr(13);
        l_offset := dbms_lob.getlength(l_body_html) + 1;
        dbms_lob.WRITE(l_body_html, length(l_temp), l_offset, l_temp);
        l_offset  := 1;
        l_ammount := 1900;
        utl_smtp.open_data(l_connection);
        WHILE l_offset < dbms_lob.getlength(l_body_html) LOOP
          utl_smtp.write_data(l_connection, dbms_lob.substr(l_body_html, l_ammount, l_offset));
          l_offset  := l_offset + l_ammount;
          l_ammount := least(1900, dbms_lob.getlength(l_body_html) - l_ammount);
        END LOOP;
        utl_smtp.close_data(l_connection);
        utl_smtp.quit(l_connection);
        dbms_lob.freetemporary(l_body_html);
      EXCEPTION
        WHEN OTHERS THEN
          ROLLBACK;
      END;
    et voici comment appeler la procédure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     html_email(p_to => v_mail, p_from => 'EMAIL SOURCE', p_subject => 'SUJET', p_text => 'MAIL VERSION TEXTE', p_html => 'MAIL VERSION HTML', p_smtp_hostname => 'PASSERELLE SMTP', p_smtp_portnum => '25');
    Il faut spécifier le contenu de MAIL VERSION TEXTE (qui correspond au mail en texte si la boite du destinataire ne peux supporter le cde HTML)
    et MAIL VERSION HTML pour un mail en HTML

  14. #14
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2003
    Messages : 412
    Par défaut
    si le server smtp est un serveur au norme RFC il faudra entourer les adresses email entre < >

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 64
    Par défaut
    Merci helyos

    Je me mets le code sur l'oreille pour plus tard.

  16. #16
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 9
    Par défaut envoie email
    bonjour,

    je suis entrain de chercher une procédure pour envoyer un email automatiquemant depuis la page forms d'oracle.

    j'ai trouvé votre procédure que je vous remercie infiniment, sauf qu'au moment de la compilation de cette dernière, il m'affiche cette erreur :
    erreur 201 : "l'identificateur 'utl_smtp.connection' doit être déclaré."

    merci de me donner un coup de main

  17. #17
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 9
    Par défaut envoyer un email
    bonjour,

    je suis entrain de chercher une procédure pour envoyer un email automatiquemant depuis la page forms d'oracle.

    j'ai trouvé votre procédure que je vous remercie infiniment, sauf qu'au moment de la compilation de cette dernière, il m'affiche cette erreur :
    erreur 201 : "l'identificateur 'utl_smtp.connection' doit être déclaré."

    merci de me donner un coup de main

  18. #18
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Merci de préciser votre version d'oracle.

    Sans doute le package utl_smtp n'est pas installé.

  19. #19
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 9
    Par défaut
    Citation Envoyé par plaineR
    Merci de préciser votre version d'oracle.

    Sans doute le package utl_smtp n'est pas installé.

    concernant la version oracle c'est 10g.
    et pour le package utl_smtp effectivement je demande d'où je peux l'installer.


    merci infiniment

  20. #20
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    dans 10g, est-ce qu'il n'y a pas un package qui permet déjà de faire des mails sans problèmes ?
    juste là le nom m'échappe...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [9iR2] Envoi de mail utl_smtp
    Par OTMANE ait dans le forum PL/SQL
    Réponses: 2
    Dernier message: 08/05/2013, 17h46
  2. Réponses: 3
    Dernier message: 21/05/2007, 12h11
  3. envoi de mail avec attachement de fichier
    Par GMI3 dans le forum Modules
    Réponses: 2
    Dernier message: 24/09/2003, 11h22
  4. Outlook ne se ferme pas après un envoi de mail
    Par Joke dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/06/2003, 17h32
  5. envoi de mail, protocol SMTP langage C
    Par Heimdall dans le forum Développement
    Réponses: 2
    Dernier message: 23/05/2003, 11h22

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