2010-07-06 3 views

Répondre

2

Vous pouvez enregistrer l'e-mail en tant que fichier .msg, puis l'enregistrer dans la base de données en tant que tableau d'octets à la place? Sinon, il existe des moyens d'accéder par programme à une boîte aux lettres ou à un fichier outlook .pst, vous devez alors écrire une interface qui leur permet de sélectionner l'email à enregistrer, puis enregistrer l'email dans des parties (sujet, vers, etc. .) séparément dans la base de données.

Pour accéder à une boîte aux lettres sur le serveur Exchange (Exchange 2007+), vous pouvez le faire à l'aide de l'API Managed Exchange Web Services 1.0. EWS API et vous pouvez le télécharger à partir de here

Il est très simple d'accéder et de récupérer des courriels, etc., comme pré Exchange 2007, il était difficile et impliqué l'analyse de beaucoup de XML ou en utilisant CDOEXM.

Heres un exemple de comment l'utiliser:

Vous devez d'abord créer un service Exchange. Ajoutez une référence au serveur Web intégré et ajoutez la ligne d'utilisation ci-dessous.

using Microsoft.Exchange.WebServices.Data; 
... 
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); 
service.AutodiscoverUrl("[email protected]"); 

Une fois que le service est en cours d'exécution et vous pouvez l'utiliser pour interroger la boîte aux lettres:

FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, 
     new ItemView()); 

Cela renverra tous les e-mails dans la boîte de réception. Vous pouvez ensuite afficher les détails de l'e-mail en utilisant ses propriétés. Si les e-mails sont dans un fichier .pst cependant, vous devrez utiliser l'API Outlook ou je recommande PST.NET (bien que vous ayez à faire mais une licence) car cela le rend beaucoup plus facile.

Heres un exemple d'utilisation PST.NET:

using System; 
using Independentsoft.Pst; 

namespace Sample 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      PstFile file = new PstFile("c:\\testfolder\\Outlook.pst"); 

      using (file) 
      { 
       Folder inbox = file.MailboxRoot.GetFolder("Inbox"); 

       if (inbox != null) 
       { 
        ItemCollection items = inbox.GetItems(); 

        for (int m = 0; m < items.Count; m++) 
        { 
         if (items[m] is Message) 
         { 
          Message message = (Message)items[m]; 

          Console.WriteLine("Id: " + message.Id); 
          Console.WriteLine("Subject: " + message.Subject); 
          Console.WriteLine("DisplayTo: " + message.DisplayTo); 
          Console.WriteLine("DisplayCc: " + message.DisplayCc); 
          Console.WriteLine("SenderName: " + message.SenderName); 
          Console.WriteLine("SenderEmailAddress: " + message.SenderEmailAddress); 
          Console.WriteLine("----------------------------------------------------------------"); 
         } 
        } 
       } 
      } 

      Console.WriteLine("Press ENTER to exit."); 
      Console.Read(); 
     } 
    } 
} 
+0

J'aimerais quelques exemples de code! – Zolomon

+0

Pas de problème, quelle version d'Exchange utilisez-vous? – w69rdy

+0

Nous utilisons 2007 je crois. – Zolomon

2

Il n'existe pas de lien vers un courrier électronique dans Outlook. Je suppose que vous souhaitez stocker quelque chose comme un raccourci dans un format texte qui peut être utilisé plus tard pour trouver/ouvrir un email dans Outlook. Si vous envisagez d'utiliser Outlook Interop API pour cela, vous pouvez utiliser EntryID de l'objet MailItem qui représente votre courrier électronique. C'est un identifiant unique de l'objet, mais il peut être changé si l'objet est déplacé ailleurs dans la structure du dossier.

Questions connexes