Notification par sms des mails urgents en java via sfr api et orange api

Soyez le premier à donner votre avis sur cette source.

Vue 9 451 fois - Téléchargée 1 415 fois

Description

Ce service web sert à envoyer une notification sur votre mobile si vous recevez un mail sur votre compte Gmail qui contient le mot « urgent » dans le sujet.

L'application est construite via l'API Test Tool de SFR API http://api.sfr.fr/apitesttool et l'API Orange.
Pour tester l'application avec des numéros SFR vous pouvez utiliser le Token de l'exemple par contre pour des numéros orange vous devez utiliser votre propre Access Key. Il est conseillé de s'inscrire pour utiliser votre propre Token SFR plutôt que le Token de l'exemple dont le compteur de crédits peut être épuisé.

Vous trouverez ci-joint le code source complet ainsi qu'un WAR pour déployer et tester l'application.

Source / Exemple :


import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;

public class IsSFRNum  {
	String url = "";
	
	public boolean Test(String phoneNumber,String token) throws Exception
	{
		url = "http://ws.red.sfr.fr/red-ws/red-b2c/resources/sis/mvnoinfo?responseType=xml&token="
			+ token + "&userIdentifier=" + phoneNumber + "&type=PhoneNumber";		
		
        //Envoyer une requête GET 
		URL client = new URL(url);	
		URLConnection conn = client.openConnection();
		InputStream responseBody = conn.getInputStream();
		
		//Convertir les données en XML document 
		Document response = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(responseBody);
		responseBody.close();
		
		//Xpath expression pour récupérer le nom de l'opérateur du numéro
		XPath xPath = XPathFactory.newInstance().newXPath();
		String lignetype = xPath.evaluate("/sis/mvnoInfo/labelMvno", response);

		if (lignetype.equals("SFR")) return true; 
		else 
		{
			return false;
		}
		
		
	}

}

//----------------------------------------------------------------------------------------------------------------------

import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;

public class SendSMS {
	String url = "";
	String textMessage="";
	String Message="";
	
	
	public String Send(String phoneNumber,String Message,String token ) throws Exception
	{
		textMessage = URLEncoder.encode( Message	, "UTF-8");
		this.Message=Message;
		url = "http://ws.red.sfr.fr/red-ws/red-b2c/resources/sms/send?responseType=xml&token="
			+ token + "&to=" + phoneNumber + "&type=PhoneNumber&msg="
			+ textMessage;
	{
		//Envoyer une requête GET 
		URL client = new URL(url);
		URLConnection conn = client.openConnection();
		InputStream responseBody = conn.getInputStream();
		
		//Convertir les données en XML document 
		Document response = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(responseBody);
		responseBody.close();

		XPath xPath = XPathFactory.newInstance().newXPath();
		String erreur = xPath.evaluate("/sms/errorCode", response);

		//Retourne  le message envoyer
		if (erreur.equals("0")) return Message; 
		//Retourne les informations d’erreur 
		else return xPath.evaluate("/sms/error", response);
		
	}

}
}
//--------------------------------------------------------------
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;

public class OrangeSendSMS {
	String url = "";
	String textMessage="";
	String Message="";
	
	
	public String Send(String phoneNumber,String Message,String accesskey ) throws Exception
	{
		textMessage = URLEncoder.encode( Message	, "UTF-8");
		this.Message=Message;
		url = "http://run.orangeapi.com/sms/sendSMS.xml?id="
			+ accesskey + "&from=38100"+"&to=" + phoneNumber + "&content="
			+ textMessage+"&ack=false";
	{
		//Envoyer une requête GET 
		URL client = new URL(url);
		URLConnection conn = client.openConnection();
		InputStream responseBody = conn.getInputStream();
		
		//Convertir les données en XML document 
		Document response = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(responseBody);
		responseBody.close();

		XPath xPath = XPathFactory.newInstance().newXPath();
		String erreur = xPath.evaluate("response/status/status_code", response);

		//Retourne  le message envoyer
		if (erreur.equals("200")) return Message; 
		//Retourne les informations d’erreur 
		else return xPath.evaluate("response/status/status_msg", response);
		
	}

}

}

//----------------------------------------------------------------------------------------------------------------------

import java.io.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;

public class UrgentMail extends HttpServlet {

   /**

  • /
private static final long serialVersionUID = 1L; public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { // Récupération des paramètres envoyés : adresse mail, mot de passe, numéro de téléphone final String email=request.getParameter("email"); final String password=request.getParameter("password"); final String phonenumber=request.getParameter("phonenumber"); // Thread qui surveille la boite email Thread thr=new Thread() { public void run() { Urgent urgentClient=new Urgent(email,password,phonenumber); Date date= new Date(); while(date!=null) { try { sleep(10000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } date=urgentClient.readUrgentMail(date); } } }; thr.start(); // Envoyer la réponse response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Réponse</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Votre demande a été prise en compte</h1>"); out.println("</body>"); out.println("</html>"); } } //---------------------------------------------------------------------- import java.util.Date; import java.util.Properties; import javax.mail.Folder; import javax.mail.Message; import javax.mail.Session; import javax.mail.Store; public class Urgent { private String userName; private String password; private String receivingHost; private String phoneNumber; // Token SFR API pour tester L&#8217;application final private String token="ae24de54fc6a711245ac4b470fcac072"; // Votre propre Orange Access Key final private String accesskey=""; Urgent(String userName,String password,String phoneNumber) { this.userName=userName; this.password=password; this.phoneNumber=phoneNumber; } public Date readUrgentMail(Date date) { // connexion à un compte gmail this.receivingHost="imap.gmail.com"; Properties props2=System.getProperties(); props2.setProperty("mail.store.protocol", "imaps"); Session session2=Session.getDefaultInstance(props2, null); try { Store store=session2.getStore("imaps"); store.connect(this.receivingHost,this.userName, this.password); Folder folder=store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); //Récupération des emails Message message[]=folder.getMessages(); String messg=""; int i; for( i=0;i<message.length;i++){ messg=message[i].getSubject(); // Si le massage est nouveau et il contient le mot urgent dans le sujet if(((messg.contains("Urgent")||messg.contains("urgent")))&&(message[i].getReceivedDate().after(date))) { // Si le numéro est un numéro SFR IsSFRNum sfrnum=new IsSFRNum(); // Envoyer SMS via SFR API if (sfrnum.Test(phoneNumber, token)){ SendSMS sendSMS=new SendSMS(); System.out.print( sendSMS.Send(phoneNumber,"From:" +message[i].getFrom()[0].toString()+", Subject: "+message[i].getSubject() + ", At:"+message[i].getReceivedDate() ,token)); } else { // Sinon envoyer SMS via Orange API OrangeSendSMS sendSMS=new OrangeSendSMS(); System.out.print( sendSMS.Send(phoneNumber,"From:" +message[i].getFrom()[0].toString()+", Subject: "+message[i].getSubject() + ", At:"+message[i].getReceivedDate() ,accesskey)); } } } folder.close(true); store.close(); return message[i-1].getReceivedDate(); } catch (Exception e) { return null; } } } //-------------------------------------------------------------------- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Accueil</title> <link href="formulaire.css" rel="stylesheet" type="text/css" /> <style type="text/css"> <!-- .Style1 { font-weight: bold; font-style: italic; color: #FF0000; font-size: 24px; } --> </style> </head> <body> <div class="Style1"> <div align="center">Service d&#8217;alerte des emails urgents </div> <form id="form1" name="form1" method="post" action="UrgentMail"> <p align="left">Votre adresse mail (Gmail) : <input name="email" type="text" id="email" size="29" value="@gmail.com" /> </p> <p align="left"> <label>Votre mot de passe : <input name="password" type="password" id="password" size="37" /> </label> </p> <p align="left"> <label>Votre numéro de téléphone : <input name="phonenumber" type="text" id="phonenumber" size="28" value="06" /> </label> </p> <div align="right"> <input type="submit" name="Submit" value="Envoyer" /> </div> </form> </div> </body> </html> //-------------------------------------------------------------------------------------------------------------------------------- #form1{ font-family: "Times New Roman", Times, serif; font-size: 14px; font-weight: bold; color: #0000CC; font-style: italic; left: 517px; position: absolute; top: 61px; width: 424px; border-top-style: double; border-right-style: double; border-bottom-style: double; border-left-style: double; }

Conclusion :


Cette application utilise L'API SMS d'Orange et les API SFR : info client, SMS, qui servent à tester si un numéro appartient au réseau SFR, envoyer un SMS SFR. D'autres API SFR sont disponibles sur SFR API : envoyer des photos, vidéo, son via MMS, gérer le carnet de contacts, identifier les modèles de mobile... etc.

AHMIM Ahmed
Membre de l'équipe SFR API

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
lundi 21 septembre 2009
Statut
Membre
Dernière intervention
25 avril 2011

très intéressant pour améliorer l'interface homme-machine (alertes systèmes, domotique, ...)
Avez-vous noté la différence de tarif entre SFR et Orange pour l'envoi d'un SMS avec ces API ? 6,8 c€ TTC pour SFR, 8,4 c€ *HT* pour Orange et réception de SMS payante (4,2 c€ HT)!!!
Messages postés
1
Date d'inscription
mercredi 21 octobre 2009
Statut
Membre
Dernière intervention
20 avril 2011

J'aime.
Messages postés
97
Date d'inscription
lundi 5 juillet 2010
Statut
Membre
Dernière intervention
21 mars 2012
2
un 10 pour l'innovation, j'adhère ;)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.