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 :

envoi mail html avec utl_smtp


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 50
    Points : 30
    Points
    30
    Par défaut envoi mail html avec utl_smtp
    bonjour,
    ma question est simple: je voudrais savoir comment envoyer un mail/fax au format html avec le package utl_smtp

    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
     
    declare
    serveursmtp varchar2(100) := 'smtp.vialtis.com';
    cnx utl_smtp.connection;
    exp varchar2(100) := 'relance-ic@vialtis.com';
    text varchar2(100) := '::0146639881' || CHR(13) || CHR(10) || '<html><body bgcolor="red">ceci est un test denvoi vers un fax</body<</html>';
    sujet varchar2(100) := 'test fax';
    dest varchar2(100) := 'fax@vialtis.com';
     
     
    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);
    utl_smtp.write_data(cnx,'FROM' || ': ' || exp || utl_tcp.crlf);
    utl_smtp.write_data(cnx,'TO' || ': ' || dest || utl_tcp.crlf);
    utl_smtp.write_data(cnx,'SUBJECT' || ': ' || sujet || utl_tcp.crlf);
    --utl_smtp.write_data(cnx,'Content-Type: text/html;' || utl_tcp.crlf);
    utl_smtp.write_data(cnx, utl_tcp.crlf||text);
    utl_smtp.close_data(cnx);
    utl_smtp.quit(cnx);
     
    end;
    comme vous pouvez le voir j'ai essayé en spécifiant le content type
    --utl_smtp.write_data(cnx,'Content-Type: text/html;' || utl_tcp.crlf);

    merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 50
    Points : 30
    Points
    30
    Par défaut html
    je crois que la solution est d'envoyer ma page html en pièce jointe
    quel est le code PL/SQL permettant de mettre une pièce jointe

  3. #3
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    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
    CREATEORREPLACEPROCEDURE Html_Email(p_to INVARCHAR2,
    p_from INVARCHAR2,
    p_subject INVARCHAR2,
    p_text INVARCHAR2DEFAULTNULL,
    p_html INVARCHAR2DEFAULTNULL,
    p_smtp_hostname INVARCHAR2,
    p_smtp_portnum INVARCHAR2)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)DEFAULTNULL;
    l_dest VARCHAR2(32767);
    l_dest_tmp VARCHAR2(32767);
    BEGIN
    -------------------------------
    -- Procedure d'envoi de mail --
    -------------------------------
    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,',')!=0LOOP
    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);
    ENDLOOP;
    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);
    
    
    A suivre...

  4. #4
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    ... suite et fin

    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
    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);
    ENDLOOP;
    utl_smtp.close_data(l_connection);
    utl_smtp.quit(l_connection);
    dbms_lob.freetemporary(l_body_html);
    EXCEPTION
    WHENOTHERSTHEN
    ROLLBACK;
    END;
    /
    

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 50
    Points : 30
    Points
    30
    Par défaut merci
    merci bcp je teste

  6. #6
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Apparament, le copier/coller a supprimé pas mal d'espaces !

    Vous pouvez retirer le code correct à cet url:
    http://sheikyerbouti.developpez.com/tmp/HTML_EMAIL.PRC

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 50
    Points : 30
    Points
    30
    Par défaut merci
    que fait le code exactement, envoi t'il un fichier htlml en pièce jointe?

  8. #8
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Citation Envoyé par n00noors
    que fait le code exactement, envoi t'il un fichier htlml en pièce jointe?
    Non, il envoi à la fois du texte simple et /ou du texte en html directement dans le corps du mail.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 50
    Points : 30
    Points
    30
    Par défaut pièce jointe
    et y a til moyen denvoyer une pièce jointe : fichier html via utl_smtp

    mon problème est le suivant: je dois envoyer un mail qui a pour contenu un texte formaté en html
    ce mail est destiné à un serveur de fax et le message doit obligatoirement commencer par
    ::num_fax
    passe_à_la_ligne
    message

    ce texte formaté je le récupère d'une table oracle et il comprend des variables que je dois changer en fonction de paramètres
    pour prendre un exemple bidon j'ai un modèl de page du style

    <html>
    <p>%%nom_client%%</p>
    </html>

    où nom_client est une variable, je parcours donc ce modèle, remplace la variable par sa valeur

    j'ai testé lenvoi de mail au serveur de fax en texte seulement et cela fonctionne,
    par contre il n'accepte pas de html dans le corps du message
    en revanche il accepte les pièces jointes et les interprète comme corps du message
    comment faire pour enregistrer mon html en tant que fichier et le mettre en pièce jointe du mail
    peut t'on créer des fichier temporaire avec PL/SQL(non stockés sur disque dur) et les mettre en pièce jointe

    merci d'avance

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 50
    Points : 30
    Points
    30
    Par défaut pièce jointe
    j'ai triuvé comment faire pour envoyer une pièce jointe
    voilà 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
     
    'Mime-Version: 1.0' || crlf ||
              'Date: ' || TO_CHAR( SYSDATE, 'dd Mon yy hh24:mi:ss' ) || crlf ||
              'From: ' || L_SENDER_NAME || crlf ||
              'Subject: ' || v_sujet || crlf ||
              'To: ' || L_MSG_TO || crlf ||
              'Content-Type: multipart/mixed; boundary="-----SECBOUND"'|| crlf ||
              'This is a multi-part message in MIME format.'|| crlf ||
              '-------SECBOUND'||crlf ||      
              'Content-Type: text/plain;charset=ISO-8859-1;'|| crlf ||  
              'Content-Transfer-Encoding: 7bit'|| crlf|| crlf || 
               entete || crlf || crlf ||
              '-------SECBOUND'|| crlf ||
              'Content-Type: application/octet-stream;'|| crlf ||
              ' name="Message.html"'||crlf ||
              'Content-Transfer_Encoding: 7bit'|| crlf ||
              'Content-Disposition: attachment;'||crlf ||
              ' filename="Message.html"'|| crlf || crlf||
               MESSAGE || crlf ||
              '-------SECBOUND--';

    SENDER_NAME, MSG_TO, MESSAGE sont des varchar2 et crlf est un varcharé52) égale à CHR(13) + CHR(10)

  11. #11
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    comment je pourrais appeler un trigger "create or replace procedure" depuis oracle forms

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

Discussions similaires

  1. [UNIX] envoi de mail HTML avec mailx
    Par darinze dans le forum Développement
    Réponses: 3
    Dernier message: 21/09/2011, 14h24
  2. Réponses: 4
    Dernier message: 19/03/2007, 12h03
  3. Réponses: 1
    Dernier message: 22/01/2007, 09h08
  4. Réponses: 4
    Dernier message: 06/03/2006, 16h14
  5. [CSS] Envoi de mail html avec CSS et image jointe
    Par firejocker dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 03/03/2006, 08h53

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