1

L'API Microsoft REST ou Outlook REST prend-elle en charge l'importation des messages électroniques existants dans une boîte aux lettres Office 365? Par définition, importer signifie copier des courriels d'une manière qui préserve leurs informations d'origine, y compris leur date de création/d'envoi/de réception.Importation d'e-mails existants dans Office 365 pendant la conservation de la date d'origine

J'ai essayé ces points d'extrémité en vain:

Ainsi soit je les ai mal utilisé, ou il est tout simplement qu'ils ne prennent pas en charge la mise en date- domaines connexes.

Répondre

1

Non, les API n'ont aucune possibilité d'importation. C'est une excellente idée cependant! Vous devriez faire une entrée sur notre forum UserVoice.

+0

Ah, fera l'affaire. Pendant ce temps, quelle est l'API la plus proche qui offre une telle capacité? L'API gérée par EWS va-t-elle faire l'affaire? – lolski

+0

EWS peut le faire, en particulier si vous avez un flux MIME à importer: https://msdn.microsoft.com/en-us/library/office/dn672319(v=exchg.150).aspx –

0

Ce que je peux comprendre que vous avez des e-mails existants quelque part sur un serveur d'archivage et que vous souhaitez les importer dans votre Office Outlook en ligne ou Outlook 365.

Qu'est-ce que vous pouvez le faire, vous pouvez utiliser l'échange WebServices et importez vos e-mails exportés. Généralement, les e-mails peuvent être importés au format .eml ou .msg. Je peux vous fournir les conseils pour les fichiers .eml.

Sur votre serveur d'archivage, vous pouvez obtenir les sauvegardes de fichiers .eml des e-mails ou vous pouvez en générer un en exportant un courrier électronique à partir d'Outlook Desktop/Mozilla Thunderbird à des fins de test.

Maintenant, vous pouvez utiliser les Nuget Package Microsoft.Exchange.WebServices qui est en fait API managée pour WebServices Microsoft Exchange

Vous pouvez utiliser le code suivant

void main() 
    { 
     ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2); 
     // Get the information of the account 
     service.Credentials = new WebCredentials("account email here", "account password here"); 
     service.AutodiscoverUrl("account email here", RedirectionUrlValidationCallback); 
     UploadMIMEEmail(service); 
    } 

    public static bool RedirectionUrlValidationCallback(string redirectionUrl) 
    { 
     // The default for the validation callback is to reject the URL. 
     bool result = false; 

     Uri redirectionUri = new Uri(redirectionUrl); 

     // Validate the contents of the redirection URL. In this simple validation 
     // callback, the redirection URL is considered valid if it is using HTTPS 
     // to encrypt the authentication credentials. 
     if (redirectionUri.Scheme == "https") 
     { 
      result = true; 
     } 
     return result; 
    } 


    private static void UploadMIMEEmail(ExchangeService service) 
    { 
     EmailMessage email = new EmailMessage(service); 

     string emlFileName = @"E:\asad.eml"; 

     using (FileStream fs = new FileStream(emlFileName, FileMode.Open, FileAccess.Read)) 
     { 
      byte[] bytes = new byte[fs.Length]; 
      int numBytesToRead = (int)fs.Length; 
      int numBytesRead = 0; 

      while (numBytesToRead > 0) 
      { 
       int n = fs.Read(bytes, numBytesRead, numBytesToRead); 

       if (n == 0) 
        break; 

       numBytesRead += n; 
       numBytesToRead -= n; 
      } 

      // Set the contents of the .eml file to the MimeContent property. 
      email.MimeContent = new MimeContent("UTF-8", bytes); 
     } 

     // Indicate that this email is not a draft. Otherwise, the email will appear as a 
     // draft to clients. 
     ExtendedPropertyDefinition PR_MESSAGE_FLAGS_msgflag_read = new ExtendedPropertyDefinition(3591, MapiPropertyType.Integer); 
     email.SetExtendedProperty(PR_MESSAGE_FLAGS_msgflag_read, 1); 

     // This results in a CreateItem call to EWS. The email will be saved in the Inbox folder. 
     email.Save(WellKnownFolderName.Inbox); 
    } 

Qu'est-ce que cette méthode fait est que la télécharge envoyer un e-mail au serveur Exchange sous la forme d'un e-mail importé avec toutes les données d'e-mail telles qu'elles se trouvent exactement dans le fichier .eml exporté.

Si vous échangez serveur est en cours d'exécution au niveau local/intérieur du domaine, vous pouvez également spécifier l'URL d'échange par

service.Url = new Uri("https://computername.domain.contoso.com/EWS/Exchange.asmx"); 

Aussi, si vous souhaitez vous connecter en utilisant les informations d'identification par défaut, vous pouvez spécifier

service.UseDefaultCredentials = true; 

Pour plus d'informations, vous pouvez suivre

https://msdn.microsoft.com/en-us/library/office/dn672319(v=exchg.150).aspx#bk_importproperties

https://code.msdn.microsoft.com/how-to-import-vcard-files-ffa0ff50