salut
j'utilise Oracle9i Enterprise Edition Release 9.2.0.1.0
j'ai la procedure suivante pour envoyer un mail via ma BD
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
 
CREATE OR REPLACE 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 je failt l'apelle de la façon suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
execute html_email(p_to => 'projetamin@arabsoft.com.tn', p_from => 'jarraysami@gmail.com', p_subject => 'SUJET', p_text => 'MAIL VERSION TEXTE', p_html => 'MAIL VERSION HTML', p_smtp_hostname => 'mail.topnet.tn', p_smtp_portnum => '25');
et j'ai l'erreur suivante
ORA-29279: erreur permanente SMTP : 555 syntax error (#5.5.4)
ORA-06512: à "SYS.UTL_SMTP", ligne 17
ORA-06512: à "SYS.UTL_SMTP", ligne 98
ORA-06512: à "SYS.UTL_SMTP", ligne 221
ORA-06512: à "TEST.HTML_EMAIL", ligne 21
ORA-06512: à ligne 1
j'ai pas trouvé de solution méme avec recherche approfondue sur les forums
est ce qu'il y a une configuration au niveau de la BD
et ce que je peut savoir le sens exacte du hostname(serveur smtp)
par example chez moi c'est mail.topnet.net
merci d'avance pour votre aide