Gestion de la priorité des emails et envoi via oracle

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Gestion de la priorité des emails et envoi via oracle

Messagepar fredodido » 21 Oct 2010 à 10:02

Bonjour,

Nous utilisons actuellement la fonction utl_mail d'oracle pour envoyer des emails sur les boites Lotus Notes.

Nous cherchons maintenant à pouvoir envoyer des messages urgents, et donc pouvoir gérer la prioirisation des emails.

La fonction utl_mail possède pour ça un paramètre optionnel priority (de 1 à 5, par défaut à 3) mais si celui si fonctionne bien lorsque le mail est envoyé vers une boîte outlook (le petit point d'exclamation rouge apparaît bien) ce n'est pas le cas pour Notes : le message arrive bien mais est "normal".

Quelqu'un s'est déjà essayé à ce genre de chose et aurait trouvé la solution?

Merci par avance.
fredodido
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 4
Inscrit(e) le : 21 Oct 2010 à 09:55

Messagepar Michael DELIQUE » 21 Oct 2010 à 10:05

Hello et Welcome

regarde ce tips => http://forum.dominoarea.org/mail-option ... 10901.html

tu trouvera ta réponse dedans, c'est un champ a rajouter avec la valeur qui va bien
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar fredodido » 21 Oct 2010 à 10:45

Tout d'abord, merci pour cette réponse rapide.

Ensuite, ... euh comment dire, en terme de Lotus Notes, je suis... il y a quoi en dessous de novice? Bref, pourriez-vous m'apporter quelques explications?

Si je comprends le contenu du lien que vous m'avez fourni, c'est le champ "DeliveryPriority" que je dois passer à "haute" ou "H" mais comment faire ça via mon appel à la fonction d'envoi de mail d'Oracle :shock:
fredodido
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 4
Inscrit(e) le : 21 Oct 2010 à 09:55

Messagepar Michael DELIQUE » 21 Oct 2010 à 10:52

euh comment dire, en terme d'Oracle, je suis... il y a quoi en dessous de novice ?

franchement aucune idée... tout dépend comment ta fonction fonctionne.
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar fredodido » 21 Oct 2010 à 10:55

lol ok, je vais voir ce que je peux trouver seul.

Pourriez-vous quand meme me dire la différence entre les paramètres "Importance" et "DeliveryPriority" sous Lotus?
fredodido
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 4
Inscrit(e) le : 21 Oct 2010 à 09:55

Messagepar Michael DELIQUE » 21 Oct 2010 à 11:01

re,

"DeliveryPriority" concerne la célérité avec laquelle le serveur va traité le mail (purement système)

"Importance" c'est pour le destinataire. dans ton cas c'est "Importance" qui compte
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar fredodido » 19 Nov 2010 à 17:17

Pour ceux que ça intéresserait, voila la procédure Oracle qui fait ça.
Attention, il s'agit de MA procédure dans laquelle j'ai supprimé tout ce qui était spécifique à ma base de données. Si la procédure d'orgine fonctionne bien, je n'ai en revanche pas testé cette version "expurgée".

Code : Tout sélectionner
PROCEDURE send (l_html IN VARCHAR2, l_priorite IN VARCHAR2) IS
  p_smtp_hostname   VARCHAR2 (30);
  p_smtp_portnum    VARCHAR2 (4);
  p_to           varchar2 (150) := 'adresse@destinataire.fr';
  p_from         varchar2 (150) := 'adresse@expediteur.fr';
  p_subject      varchar2 (150) := 'Sujet de test';
  p_text         varchar2 (4000) := 'Ne pas répondre à ce mail';
  p_html         varchar2 (32767) := l_html;     
  p_priorite     varchar2(6) := l_priorite; -- Level of priority. Value = 'High', 'Normal' or 'Low'
  p_header       varchar2 (32767) DEFAULT NULL; -- this char will be the header
  l_body_html     clob := empty_clob;  --This LOB will be the email message
  l_offset        number; -- use to keep the length of the email
  l_ammount       number; -- use to send the email in 1900 byte chunks
  l_connection    utl_smtp.connection;
BEGIN
   
    -- select ip and port number for the smtp protocole
   SELECT substr(value,0,instr(value, ':')-1)
   , substr(value,instr(value, ':')+1)
   INTO p_smtp_hostname, p_smtp_portnum
   FROM v$parameter
   WHERE upper(name) LIKE '%SMTP%';
   
   utl_smtp.helo( l_connection, p_smtp_hostname );
   utl_smtp.mail( l_connection, p_from );
   utl_smtp.rcpt( l_connection, p_to );
   
   -- Building the header
   p_header := p_header || 'MIME-Version: 1.0' ||  chr(13) || chr(10);
   p_header := p_header || 'To: ' || p_to || chr(13) || chr(10);
   p_header := p_header || 'From: ' || p_from || chr(13) || chr(10);
   p_header := p_header || 'Subject: ' || p_subject || chr(13) || chr(10);
   p_header := p_header || 'Reply-To: ' || p_from ||  chr(13) || chr(10);
   p_header := p_header || 'Importance: '|| p_priorite ||  chr(13) || chr(10);
   p_header := p_header || 'Content-Type: text/html; charset=iso-8859-1' ||  chr(13) || chr(10); -- charset must be modify with the correct value
   
   -- Building the email itself
   dbms_lob.createtemporary( l_body_html, false, 10 );
   dbms_lob.WRITE(l_body_html,length(p_header),1,p_header);
   
   l_offset := dbms_lob.getlength(l_body_html) + 1;
   dbms_lob.WRITE(l_body_html,length(p_html),l_offset,p_html);
   
   -- Send the email in 1900 byte chunks to UTL_SMTP
   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_raw_data(l_connection,utl_raw.cast_to_raw(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 NO_DATA_FOUND THEN
     raise_application_error (-20100, 'Invalid Registration');
  WHEN UTL_SMTP.invalid_operation THEN
     DBMS_OUTPUT.put_line (' Invalid Operation in SMTP transaction.');
     RAISE;
  WHEN UTL_SMTP.transient_error THEN
     DBMS_OUTPUT.put_line (' Temporary problems with sending email - try again later.');
     RAISE;
  WHEN UTL_SMTP.permanent_error THEN
     DBMS_OUTPUT.put_line (' Errors in code for SMTP transaction.');
     RAISE;
  WHEN OTHERS THEN
     -- Consider logging the error and then re-raise
     RAISE;
END send;
fredodido
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 4
Inscrit(e) le : 21 Oct 2010 à 09:55


Retour vers Développement