Gaëtan Bouveret
Création d'un événement sur réception d'email
Développement d'un event receiver de type « EmailReceived » pour SharePoint
Par Gaëtan Bouveret publié le 09/09/2007 à 23:01, lu 4964 fois, 9 pages
 3 | Création du projet
Avant de rentrer dans le vif du sujet, sachez qu'il n'est pas nécessaire de développer sur un poste avec Windows 2003 et SharePoint dessus, cela rendra néanmoins le déploiement et les tests plus simples. Il vous faudra cependant récupérer le fichier « Microsoft.SharePoint.dll » afin de pouvoir le référencer dans votre projet. Vous le trouverez dans le répertoire « C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI » (chemin à adapter selon votre environnement).
Commençons par créer un projet sous Visual Studio 2005 de type « Bibliothèque de classes » que nous appellerons « LinksEmailReceiver » et signons de suite l'assembly. En effet, Il faudra installer la dll dans le GAC pour pouvoir faire fonctionner le gestionnaire.
Changeons ensuite le nom du fichier « Class1.cs » en « LinkEmailEvent.cs » ainsi que le nom de la classe de la même manière. Ajoutons la référence à la dll « Microsoft.SharePoint » (soit dans la liste des assemblies .NET en choisissant Windows SharePoint Services 3.0 si mon poste possède SharePoint, soit en sélectionnant la dl copiée sur ma machine), puis rajoutons 3 clauses « using », 2 pour pouvoir utiliser l'API SharePoint : « Microsoft.SharePoint » et « Microsoft.SharePoint.Utilities », et 1 pour lire les pièces attachées : « System.IO ».
Modifions ensuite la classe « LinkEmailEvent » pour la faire hériter de « SPEmailEventReceiver » et surchargeons la méthode « EmailReceived ». C'est cette méthode qui est appelée lors de la réception d'email et qui va nous permettre de réaliser le fonctionnement désiré.
Nous arrivons à ce résultat:

using System;

using System.IO;

using System.Collections.Generic;

using System.Text;

using Microsoft.SharePoint;

using Microsoft.SharePoint.Utilities;

 

namespace LinksEmailReceiver

{

    public class LinkEmailEvent : SPEmailEventReceiver

    {

        public override void EmailReceived(

            SPList list,

            SPEmailMessage emailMessage,

            string receiverData)

        {

        }

    }

}

La méthode « EmailReceived » possède 3 paramètres :
  • La liste levant l'événement
  • Le message électronique destiné à être intégré à la liste
Des données supplémentaires sous forme de chaîne de caractère qui peuvent être fournies à l'événement lors de son enregistrement (nous n'en aurons pas besoin ici). Détaillons un peu plus la classe « SPEmailMessage » :
 
Classe SPEmailMessage

Classe SPEmailMessage

 
  • La méthode «GetMessageStream() » nous permet tout simplement de récupérer le contenu du mail sous forme de flux.
  • La propriété « Attachments » est une collection de « SPEmailAttachment » représentant les pièces attachées au mail
  • Les propriétés « EnvelopeSender » et « Sender » correspondent à l'auteur du mail
  • La propriété « Headers » est une collection de « SPEmailHeader » représentant les différentes en-têtes associées au mail, on y trouvera par exemple le sujet du message
  • Les propriétés « HtmlBody » et « PlainTextBody » correspondent toutes deux au corps du message, respectivement au format HTML et format texte brut
 
» Démarrer une discussion
 
Discussion démarée par raptor08 le 20/04/2011 à 09:33, 1 commentaire(s).
Discussion démarée par avikumar le 26/12/2008 à 15:42, 1 commentaire(s).