<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/milimail/index.php?action=history&amp;amp;feed=atom&amp;amp;title=Mrs%2Ffr</id>
		<title>Mrs/fr - Historique des versions</title>
		<link rel="self" type="application/atom+xml" href="http://atelier.adullact.org/plugins/mediawiki/wiki/milimail/index.php?action=history&amp;amp;feed=atom&amp;amp;title=Mrs%2Ffr"/>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/milimail/index.php?title=Mrs/fr&amp;action=history"/>
		<updated>2026-05-02T06:19:34Z</updated>
		<subtitle>Historique pour cette page sur le wiki</subtitle>
		<generator>MediaWiki 1.27.4</generator>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/milimail/index.php?title=Mrs/fr&amp;diff=306&amp;oldid=prev</id>
		<title>Rfairise : Page créée avec « {{lang|Mrs|Mrs/fr}} &gt; Documentation &gt; Module : Message Remote Services {{DownloadPanel/fr | title        = mrs | compat       = Trustedbird 2 … »</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/milimail/index.php?title=Mrs/fr&amp;diff=306&amp;oldid=prev"/>
				<updated>2010-09-03T15:25:00Z</updated>
		
		<summary type="html">&lt;p&gt;Page créée avec « {{lang|Mrs|Mrs/fr}} &amp;gt; &lt;a href=&quot;/plugins/mediawiki/wiki/milimail/index.php/Documentation/fr&quot; title=&quot;Documentation/fr&quot;&gt;Documentation&lt;/a&gt; &amp;gt; &lt;a href=&quot;/plugins/mediawiki/wiki/milimail/index.php/Mrs/fr&quot; title=&quot;Mrs/fr&quot;&gt;Module : Message Remote Services&lt;/a&gt; {{DownloadPanel/fr | title        = mrs | compat       = Trustedbird 2 … »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{lang|Mrs|Mrs/fr}}&lt;br /&gt;
&amp;gt; [[Documentation/fr|Documentation]] &amp;gt; [[Mrs/fr|Module : Message Remote Services]]&lt;br /&gt;
{{DownloadPanel/fr&lt;br /&gt;
| title        = mrs&lt;br /&gt;
| compat       = Trustedbird 2&lt;br /&gt;
| info = &amp;amp;rArr; [http://adullact.net/plugins/scmgit/cgi-bin/gitweb.cgi?p=milimail/trustedbird.git;a=blob_plain;f=message-remote-services/ChangeLog;hb=HEAD ChangeLog]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Message Remote Services''' est un module complémentaire pour Mozilla Thunderbird 2 qui expose des services distants d'envoi et de réception de messages à des processus externes.&lt;br /&gt;
&lt;br /&gt;
Une API Java permettant de communiquer avec ce module est disponible.&lt;br /&gt;
Par conséquent, un programme Java peut instrumentaliser le logiciel Thunderbird lancé sur le même poste.&lt;br /&gt;
&lt;br /&gt;
MRS permet :&lt;br /&gt;
* d'envoyer des emails.&lt;br /&gt;
* de lister et recevoir les mails reçus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pré-requis ==&lt;br /&gt;
&lt;br /&gt;
[[Trustedbird/fr|Trustedbird 2]] est nécessaire pour utiliser le module dans sa version actuelle.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Pour configurer, effectuez un clic droit sur le module dans le menu des extensions :&lt;br /&gt;
&lt;br /&gt;
[[Image:config_mrs_e.png|Configuration de MRS]]&lt;br /&gt;
&lt;br /&gt;
* Les services peuvent être démarrés au démarrage et stoppés à l'arrêt de Thunderbird.&lt;br /&gt;
* Quand le mode est changé, Thunderbird doit être redémarré.&lt;br /&gt;
&lt;br /&gt;
== Utiliser l'API Java ==&lt;br /&gt;
&lt;br /&gt;
Le module Message Remote Services expose des services accessibles par une autre application munie de l'API Java détaillée ci-dessous.&lt;br /&gt;
&lt;br /&gt;
La MRS API est composé d'un fichier JAR  (MessageRemoteServices.jar) à inclure dans l'application.&lt;br /&gt;
La bibliothèque lib/commons-io-1.4.jar est nécessaire au bon fonctionnement de l'API. Elle doit donc être incluse dans le projet cible.&lt;br /&gt;
&lt;br /&gt;
=== Initialisation de l'API création des services === &lt;br /&gt;
&lt;br /&gt;
 import org.milimail.messageRemoteServiceAPI.init.*;&lt;br /&gt;
 import org.milimail.messageRemoteServiceAPI.compose.*;&lt;br /&gt;
 import org.milimail.messageRemoteServiceAPI.account.*;&lt;br /&gt;
 &lt;br /&gt;
 public static void main(String[] args) {&lt;br /&gt;
   ServiceCreator serviceCreator = API.init();&lt;br /&gt;
   MessageComposeServiceProxy composeService = serviceCreator.createMessageComposeService();&lt;br /&gt;
   AccountServiceProxy accountService = serviceCreator.createAccountService();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Account Service === &lt;br /&gt;
   //Call to the running Thunderbird, Get all Accounts for the current profile&lt;br /&gt;
   List&amp;lt;Account&amp;gt; accounts = accountService.GetAllAccounts();&lt;br /&gt;
   for (Account account : accounts) {&lt;br /&gt;
     //Server Imap Name			&lt;br /&gt;
     String serverName = account.getServerHostName();&lt;br /&gt;
     //Account Id&lt;br /&gt;
     String key = account.getKey();&lt;br /&gt;
     System.out.println(serverName + &amp;quot; &amp;quot; + key);&lt;br /&gt;
   } &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compose Service === &lt;br /&gt;
Envoyer un message simple à un destinaire&lt;br /&gt;
 ServiceCreator serviceCreator = API.init();&lt;br /&gt;
 MessageComposeServiceProxy composeService = serviceCreator.createMessageComposeService();&lt;br /&gt;
 AccountServiceProxy accountService = serviceCreator.createAccountService();&lt;br /&gt;
 //Simple implementation of MessageSendListener interface which print the Send status&lt;br /&gt;
 MessageSendListener messageListener = serviceCreator&lt;br /&gt;
 				.createMessageSendListener(new MessageSendListenerServantConsole());&lt;br /&gt;
 &lt;br /&gt;
 //Take the second Thunderbird's account for the current profile&lt;br /&gt;
 Account account = accountService.GetAllAccounts().get(1);&lt;br /&gt;
 &lt;br /&gt;
 //Create the message to send&lt;br /&gt;
 Message message = new Message();&lt;br /&gt;
 message.setSubject(&amp;quot;Subject from API&amp;quot;);&lt;br /&gt;
 message.setBody(&amp;quot;body from API&amp;quot;);&lt;br /&gt;
 String[] to = { &amp;quot;user2@test.milimail.org&amp;quot; };&lt;br /&gt;
 message.setTo(to);&lt;br /&gt;
 &lt;br /&gt;
 //Call to Thunderbird, Callback to messageListener (print status to console)&lt;br /&gt;
 composeService.sendMessage(account, message, messageListener);	&lt;br /&gt;
&lt;br /&gt;
* Crypt message&lt;br /&gt;
 Security security = new Security();&lt;br /&gt;
 security.setEncrypted(true);&lt;br /&gt;
 message.setSecurity(security);&lt;br /&gt;
&lt;br /&gt;
* Sign message&lt;br /&gt;
 Security security = new Security();&lt;br /&gt;
 security.setSigned(true);&lt;br /&gt;
 message.setSecurity(security);&lt;br /&gt;
&lt;br /&gt;
* Header&lt;br /&gt;
 List&amp;lt;Header&amp;gt; headers = new ArrayList&amp;lt;Header&amp;gt;();&lt;br /&gt;
 Header header0 = new Header();&lt;br /&gt;
 header0.setKey(&amp;quot;X-MRS-TEST-1&amp;quot;);&lt;br /&gt;
 header0.setValue(&amp;quot;X-MRS-VALUE-1&amp;quot;);&lt;br /&gt;
 headers.add(header0);&lt;br /&gt;
 message.setHeaders(headers);&lt;br /&gt;
&lt;br /&gt;
* MDN Read receipt&lt;br /&gt;
 Notification notification = new Notification();&lt;br /&gt;
 notification.setMDNReadRequested(true);&lt;br /&gt;
 message.setNotification(notification);&lt;br /&gt;
&lt;br /&gt;
* DSN Delivery receipt&lt;br /&gt;
 //Only with milimail (thunderbird 2.x patched)&lt;br /&gt;
 Notification notification = new Notification();&lt;br /&gt;
 notification.setDSNRequested(true);&lt;br /&gt;
 DSNType type = new DSNType();&lt;br /&gt;
 //RET=FULL sinon RET=HDRS&lt;br /&gt;
 type.setReturnFullHDRRequested(true);&lt;br /&gt;
 &lt;br /&gt;
 //Vous pouvez mixer ces trois options&lt;br /&gt;
 type.setOnSuccessRequested(true);&lt;br /&gt;
 type.setOnDelayRequested(true);&lt;br /&gt;
 type.setOnFailureRequested(true);&lt;br /&gt;
 &lt;br /&gt;
 notification.setDsnType(type);&lt;br /&gt;
 &lt;br /&gt;
 message.setNotification(notification);&lt;br /&gt;
&lt;br /&gt;
 //Seulement avec milimail ou thunderbird 2.x patché&lt;br /&gt;
 Notification notification = new Notification();&lt;br /&gt;
 notification.setDSNRequested(true);&lt;br /&gt;
 DSNType type = new DSNType();&lt;br /&gt;
 //RET=FULL sinon RET=HDRS&lt;br /&gt;
 type.setReturnFullHDRRequested(false);&lt;br /&gt;
 &lt;br /&gt;
 //NOTIFY=NEVER&lt;br /&gt;
 type.setNeverRequested(true);&lt;br /&gt;
 &lt;br /&gt;
 notification.setDsnType(type);&lt;br /&gt;
 &lt;br /&gt;
 message.setNotification(notification);&lt;br /&gt;
&lt;br /&gt;
* Attachments&lt;br /&gt;
 List&amp;lt;Attachment&amp;gt; attachments = new ArrayList&amp;lt;Attachment&amp;gt;();&lt;br /&gt;
 Attachment attachment0 = new Attachment();&lt;br /&gt;
 attachment0 = new Attachment();&lt;br /&gt;
 attachment0.setDirPath(&amp;quot;/tmp/res/&amp;quot;);&lt;br /&gt;
 attachment0.setFileName(&amp;quot;attachment1.txt&amp;quot;);&lt;br /&gt;
 attachment0.setMimeType(&amp;quot;text/plain&amp;quot;);&lt;br /&gt;
 attachments.add(attachment0);&lt;br /&gt;
 message.setAttachments(attachments);&lt;br /&gt;
&lt;br /&gt;
=== Browse Service ===&lt;br /&gt;
Récuperer le répertoire Inbox :&lt;br /&gt;
 ServiceCreator serviceCreator = API.init();&lt;br /&gt;
 MessageBrowseServiceProxy browseService = serviceCreator.createBrowseService();&lt;br /&gt;
 FolderHolder folderHolder = new FolderHolder();&lt;br /&gt;
 browseService.getRootFolder(account, folderHolder);&lt;br /&gt;
 Folder folder = folderHolder.getValue();&lt;br /&gt;
 System.out.println(&amp;quot;inbox folder name : &amp;quot; + folder.getName());&lt;br /&gt;
&lt;br /&gt;
Récuperer le répertoire local : &lt;br /&gt;
 FolderHolder folderHolder = new FolderHolder();&lt;br /&gt;
 browseService.getLocalFolder(folderHolder);		&lt;br /&gt;
 Folder folder = folderHolder.getValue();&lt;br /&gt;
 System.out.println(&amp;quot;local folder name : &amp;quot; + folder.getName());&lt;br /&gt;
&lt;br /&gt;
Récuperer tous les répertoires fils d'un répertoire&lt;br /&gt;
 FoldersHolder foldersHolder = new FoldersHolder();&lt;br /&gt;
 browseService.getAllFolders(fatherFolder, foldersHolder);&lt;br /&gt;
 Folder[] folders = foldersHolder.getValue();&lt;br /&gt;
&lt;br /&gt;
Récuperer tous les handlers de messages d'un répertoire&lt;br /&gt;
Les handlers contiennent les inforamtions importantes (taille, etat, date, To, CC mais pas leur contenu&lt;br /&gt;
 MessageHandlersHolder messageHandlersHolder = new MessageHandlersHolder();&lt;br /&gt;
 browseService.getMessageHandlers(folder, messageHandlersHolder);		&lt;br /&gt;
 MessageHandler[] handlers = messageHandlersHolder.getValue();&lt;br /&gt;
 for (int i = 0; i &amp;lt; handlers.length; i++) {&lt;br /&gt;
    System.out.println(handlers.getSubject());&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Récuperer la source brute d'un message&lt;br /&gt;
 //Vous devez héritez de la classe abstraite SourceListenerPOA&lt;br /&gt;
 //car le processus de récuperation du contenu est asynchrone&lt;br /&gt;
 sourceMessageListener = serviceCreator.createSourceMessageListener(new SourceListenerPOA() {&lt;br /&gt;
 			&lt;br /&gt;
 				public void OnLoad(byte[] source) {&lt;br /&gt;
 					String sourceString = new String(source);&lt;br /&gt;
 		                        System.out.println(sourceString);&lt;br /&gt;
 			&lt;br /&gt;
 				}&lt;br /&gt;
 			});&lt;br /&gt;
 browseService.getSource(handler, sourceMessageListener);&lt;br /&gt;
&lt;br /&gt;
Récuperer le contenu décrypté si besoin sous la forme d'un objet JavaMail de type MimeMessage&lt;br /&gt;
 //Vous devez héritez de la classe abstraite AbstractMimeMessageListener&lt;br /&gt;
 //car le processus de récuperation du contenu est asynchrone&lt;br /&gt;
 sourceMessageListener = serviceCreator.createSourceMessageListener(new AbstractMimeMessageListener() {&lt;br /&gt;
 		&lt;br /&gt;
 	public void onLoad(MimeMessage mimeMessage) {&lt;br /&gt;
 		//Do your job, this a Javamail MimeMessage&lt;br /&gt;
 	}&lt;br /&gt;
 browseService.getDecryptedSource(handler, sourceMessageListener);&lt;br /&gt;
  });&lt;/div&gt;</summary>
		<author><name>Rfairise</name></author>	</entry>

	</feed>