2017-06-21 1 views
0

Je ne peux pas enregistrer un message électronique EWS dans Office 365 Outlook.Enregistrer l'erreur de message EWS

Bonjour. J'essaie d'ajouter un message électronique en utilisant Microsoft.Exchange.WebServices lib en C#. créer un nouveau « Microsoft.Exchange.WebServices.Data.EmailMessage », qui ressemble à ceci:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope> 
    <soap:Header> 
    <t:RequestServerVersion Version="Exchange2007_SP1" /> 
    <t:TimeZoneContext> 
     <t:TimeZoneDefinition Id="UTC" /> 
    </t:TimeZoneContext> 
    <t:ExchangeImpersonation> 
     <t:ConnectingSID> 
     <t:PrimarySmtpAddress>[email protected]</t:PrimarySmtpAddress> 
     </t:ConnectingSID> 
    </t:ExchangeImpersonation> 
    </soap:Header> 
    <soap:Body> 
    <m:CreateItem MessageDisposition="SaveOnly"> 
    <m:SavedItemFolderId> 
     <t:FolderId Id="AQMkAGFjMjFlOTJlLWI3YjYtNDZlMS04MTRkLTYyYWECMTg2MmIzAC4AAAMRJLfC0jQnTqZjTdO9e1KoAQCygVW3rMc4SbvynFv3xnH6AAACAQwAAAA=" /> 
    </m:SavedItemFolderId> 
    <m:Items> 
     <t:Message> 
     <t:Subject>SubjectSample</t:Subject> 
     <t:Body BodyType="HTML">BodySample</t:Body> 
     <t:ExtendedProperty> 
     <t:ExtendedFieldURI PropertyTag="57" PropertyType="SystemTime" /> 
     <t:Value>2017-02-17T16:37:38.000</t:Value> 
     </t:ExtendedProperty> 
     <t:ExtendedProperty> 
     <t:ExtendedFieldURI PropertyTag="3590" PropertyType="SystemTime" /> 
     <t:Value>2017-02-17T16:37:38.000</t:Value> 
     </t:ExtendedProperty> 
     <t:ExtendedProperty> 
     <t:ExtendedFieldURI PropertyTag="3591" PropertyType="Integer" /> 
     <t:Value>1</t:Value> 
     </t:ExtendedProperty> 
     <t:From> 
     <t:Mailbox> 
     <t:Name>support</t:Name> 
     <t:EmailAddress>[email protected]</t:EmailAddress> 
     </t:Mailbox> 
     </t:From> 
     <t:IsRead>true</t:IsRead> 
     </t:Message> 
    </m:Items> 
    </m:CreateItem> 
    </soap:Body> 
</soap:Envelope> 

Quand j'essayer de sauver ce message EWS, je reçois une erreur « Microsoft.Exchange.WebServices.Data .ServiceResponseException ' avec le code de réponse:' ErrorInvalidExchangeImpersonationHeaderData 'et message:' Un en-tête SOAP ExchangeImpersonation doit contenir un nom d'utilisateur principal, un SID utilisateur ou une adresse SMTP primaire '. J'utilise l'authentification ServiceAccount.

Il y a quelques jours, cela a bien fonctionné.

+0

L'erreur vous dit que le emailaddress utilisé dans PrimarySmtpAddress est pas l'adresse e-mail principale du compte. Si cela a fonctionné il y a quelques jours et a cessé de fonctionner, le PrimarySMTPAddress a probablement été modifié. –

+0

PrimarySmtpAddress n'a pas changé. –

Répondre

0

Je n'ai pas travaillé sur un message électronique, mais selon le lien msdn read Anchor Mailbox et avec l'expérience de récupération de rendez-vous, essayez de passer l'en-tête Anchor Mailbox.

Exemple de code est beow

ImpersonatedUserId impersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, strAttendeeEmail); 
            _service.ImpersonatedUserId = impersonatedUserId; 
            if (!_service.HttpHeaders.ContainsKey("X-AnchorMailbox")) 
             _service.HttpHeaders.Add("X-AnchorMailbox", strAttendeeEmail); 
            else 
             _service.HttpHeaders["X-AnchorMailbox"] = strAttendeeEmail;