Mrs/fr

De Trustedbird Client Wiki
English | Français

> Documentation > Module : Message Remote Services

Télécharger mrs
Fonctionne avec : Trustedbird 2

ChangeLog

Comment installer dans Thunderbird


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.

Une API Java permettant de communiquer avec ce module est disponible. Par conséquent, un programme Java peut instrumentaliser le logiciel Thunderbird lancé sur le même poste.

MRS permet :

  • d'envoyer des emails.
  • de lister et recevoir les mails reçus.


Pré-requis

Trustedbird 2 est nécessaire pour utiliser le module dans sa version actuelle.

Configuration

Pour configurer, effectuez un clic droit sur le module dans le menu des extensions :

Configuration de MRS

  • Les services peuvent être démarrés au démarrage et stoppés à l'arrêt de Thunderbird.
  • Quand le mode est changé, Thunderbird doit être redémarré.

Utiliser l'API Java

Le module Message Remote Services expose des services accessibles par une autre application munie de l'API Java détaillée ci-dessous.

La MRS API est composé d'un fichier JAR (MessageRemoteServices.jar) à inclure dans l'application. 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.

Initialisation de l'API création des services

import org.milimail.messageRemoteServiceAPI.init.*;
import org.milimail.messageRemoteServiceAPI.compose.*;
import org.milimail.messageRemoteServiceAPI.account.*;

public static void main(String[] args) {
  ServiceCreator serviceCreator = API.init();
  MessageComposeServiceProxy composeService = serviceCreator.createMessageComposeService();
  AccountServiceProxy accountService = serviceCreator.createAccountService();
}

Account Service

  //Call to the running Thunderbird, Get all Accounts for the current profile
  List<Account> accounts = accountService.GetAllAccounts();
  for (Account account : accounts) {
    //Server Imap Name			
    String serverName = account.getServerHostName();
    //Account Id
    String key = account.getKey();
    System.out.println(serverName + " " + key);
  } 


Compose Service

Envoyer un message simple à un destinaire

ServiceCreator serviceCreator = API.init();
MessageComposeServiceProxy composeService = serviceCreator.createMessageComposeService();
AccountServiceProxy accountService = serviceCreator.createAccountService();
//Simple implementation of MessageSendListener interface which print the Send status
MessageSendListener messageListener = serviceCreator
				.createMessageSendListener(new MessageSendListenerServantConsole());

//Take the second Thunderbird's account for the current profile
Account account = accountService.GetAllAccounts().get(1);

//Create the message to send
Message message = new Message();
message.setSubject("Subject from API");
message.setBody("body from API");
String[] to = { "user2@test.milimail.org" };
message.setTo(to);

//Call to Thunderbird, Callback to messageListener (print status to console)
composeService.sendMessage(account, message, messageListener);	
  • Crypt message
Security security = new Security();
security.setEncrypted(true);
message.setSecurity(security);
  • Sign message
Security security = new Security();
security.setSigned(true);
message.setSecurity(security);
  • Header
List<Header> headers = new ArrayList<Header>();
Header header0 = new Header();
header0.setKey("X-MRS-TEST-1");
header0.setValue("X-MRS-VALUE-1");
headers.add(header0);
message.setHeaders(headers);
  • MDN Read receipt
Notification notification = new Notification();
notification.setMDNReadRequested(true);
message.setNotification(notification);
  • DSN Delivery receipt
//Only with milimail (thunderbird 2.x patched)
Notification notification = new Notification();
notification.setDSNRequested(true);
DSNType type = new DSNType();
//RET=FULL sinon RET=HDRS
type.setReturnFullHDRRequested(true);

//Vous pouvez mixer ces trois options
type.setOnSuccessRequested(true);
type.setOnDelayRequested(true);
type.setOnFailureRequested(true);

notification.setDsnType(type);

message.setNotification(notification);
//Seulement avec milimail ou thunderbird 2.x patché
Notification notification = new Notification();
notification.setDSNRequested(true);
DSNType type = new DSNType();
//RET=FULL sinon RET=HDRS
type.setReturnFullHDRRequested(false);

//NOTIFY=NEVER
type.setNeverRequested(true);

notification.setDsnType(type);

message.setNotification(notification);
  • Attachments
List<Attachment> attachments = new ArrayList<Attachment>();
Attachment attachment0 = new Attachment();
attachment0 = new Attachment();
attachment0.setDirPath("/tmp/res/");
attachment0.setFileName("attachment1.txt");
attachment0.setMimeType("text/plain");
attachments.add(attachment0);
message.setAttachments(attachments);

Browse Service

Récuperer le répertoire Inbox :

ServiceCreator serviceCreator = API.init();
MessageBrowseServiceProxy browseService = serviceCreator.createBrowseService();
FolderHolder folderHolder = new FolderHolder();
browseService.getRootFolder(account, folderHolder);
Folder folder = folderHolder.getValue();
System.out.println("inbox folder name : " + folder.getName());

Récuperer le répertoire local :

FolderHolder folderHolder = new FolderHolder();
browseService.getLocalFolder(folderHolder);		
Folder folder = folderHolder.getValue();
System.out.println("local folder name : " + folder.getName());

Récuperer tous les répertoires fils d'un répertoire

FoldersHolder foldersHolder = new FoldersHolder();
browseService.getAllFolders(fatherFolder, foldersHolder);
Folder[] folders = foldersHolder.getValue();

Récuperer tous les handlers de messages d'un répertoire Les handlers contiennent les inforamtions importantes (taille, etat, date, To, CC mais pas leur contenu

MessageHandlersHolder messageHandlersHolder = new MessageHandlersHolder();
browseService.getMessageHandlers(folder, messageHandlersHolder);		
MessageHandler[] handlers = messageHandlersHolder.getValue();
for (int i = 0; i < handlers.length; i++) {
   System.out.println(handlers.getSubject());
}

Récuperer la source brute d'un message

//Vous devez héritez de la classe abstraite SourceListenerPOA
//car le processus de récuperation du contenu est asynchrone
sourceMessageListener = serviceCreator.createSourceMessageListener(new SourceListenerPOA() {
			
				public void OnLoad(byte[] source) {
					String sourceString = new String(source);
		                        System.out.println(sourceString);
			
				}
			});
browseService.getSource(handler, sourceMessageListener);

Récuperer le contenu décrypté si besoin sous la forme d'un objet JavaMail de type MimeMessage

//Vous devez héritez de la classe abstraite AbstractMimeMessageListener
//car le processus de récuperation du contenu est asynchrone
sourceMessageListener = serviceCreator.createSourceMessageListener(new AbstractMimeMessageListener() {
		
	public void onLoad(MimeMessage mimeMessage) {
		//Do your job, this a Javamail MimeMessage
	}
browseService.getDecryptedSource(handler, sourceMessageListener);
 });