Exchange Web Services

L’enregistrement est utilisé pour le débogage, ainsi que pour collecter et analyser des informations de fonctionnement sur l’application. Ces informations sont écrites dans un fichier appelé journal. Les fichiers journaux contiennent des informations système sur le fonctionnement de l’application cliente, par exemple, les actions des utilisateurs ou des programmes.

Dans cet article, nous allons aborder comment configurer l’enregistrement des activités du client EWS en utilisant C# .NET.

API C# .NET pour travailler avec les services Web Exchange de MS

Pour gérer les services Web Exchange de MS, nous allons utiliser Aspose.Email pour .NET.

C’est une API puissante qui permet d’accéder à divers services du serveur Exchange de MS sans aucun effort. De plus, elle offre de nombreuses fonctionnalités pour implémenter des applications clientes de messagerie.

Vous pouvez soit télécharger le DLL de l’API, soit l’installer depuis NuGet en utilisant la commande suivante.

PM> Install-Package Aspose.Email 

Activer l’enregistrement des activités à l’aide du fichier App.config

Cette option est adaptée aux applications où app.config est la manière préférée de conserver la configuration de l’application.

Voici les étapes pour activer l’enregistrement dans EWSClient en C#.

  • Tout d’abord, ajoutez un fichier de configuration d’application à un projet C#, s’il n’a pas été ajouté auparavant.
  • Ensuite, ajoutez le contenu suivant au fichier de configuration.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="Aspose.Email.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>
    <applicationSettings>
        <Aspose.Email.Properties.Settings>
            <setting name="EWSDiagnosticLog" serializeAs="String">
                <value>..\..\..\Log\Aspose.Email.EWS.log</value>
            </setting>
            <setting name="EWSDiagnosticLog_UseDate" serializeAs="String">
                <value>False</value>
            </setting>
        </Aspose.Email.Properties.Settings>
    </applicationSettings>
</configuration>

Nous pouvons voir deux sections de paramètres :

  • EWSDiagnosticLog - Spécifie le chemin relatif ou absolu vers le fichier journal.
  • EWSDiagnosticLog_UseDate - Spécifie s’il faut ajouter une représentation sous forme de chaîne de la date actuelle au nom du fichier journal.

Activer l’enregistrement des activités à l’aide du fichier appsettings.json

Cette option est préférée pour les applications .NET Core.

Voici les étapes pour activer l’enregistrement dans EWSClient en C#.

  • Tout d’abord, ajoutez un fichier de configuration appsettings.json à un projet C#, s’il n’a pas été ajouté auparavant. Assurez-vous que le fichier de projet contient les lignes suivantes dans la section ItemGroup :
<Content Include="appsettings.json">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
  • Ensuite, ajoutez le contenu suivant au fichier appsettings.json.
{
  "EWSDiagnosticLog": "ews.log",
  "EWSDiagnosticLog_UseDate": true
}

Nous pouvons voir deux propriétés :

  • EWSDiagnosticLog - Spécifie le chemin relatif ou absolu vers le fichier journal.
  • EWSDiagnosticLog_UseDate - Spécifie s’il faut ajouter une représentation sous forme de chaîne de la date actuelle au nom du fichier journal.

Activer l’enregistrement des activités dans le code du programme

Vous pouvez également activer l’enregistrement immédiatement dans le code. Remarque : même si vous avez déjà activé l’enregistrement à l’aide de fichiers de configuration, cette option sera appliquée.

Voici les étapes pour activer l’enregistrement dans EWSClient en C#.

  • Tout d’abord, créez un EWSClient.
  • Deuxièmement, définissez le chemin vers le fichier journal à l’aide de la propriété LogFileName.
  • Enfin, définissez la propriété UseDateInLogFileName si nécessaire.
using (var client = EWSClient.GetEWSClient("https://outlook.office365.com/EWS/Exchange.asmx", credentials))
{
  client.LogFileName = @"Aspose.Email.EWS.log";
  client.UseDateInLogFileName = false;
}

Un exemple d’informations sur un fichier journal

Voici un exemple d’entrées de fichier journal lorsque la méthode ListMessages est exécutée. Chaque nouvelle entrée est précédée d’un horodatage.

Les entrées suivantes peuvent être distinguées dans le fichier journal :

  1. En-tête du fichier journal. Inclut la version d’Aspose.Email, le nom et l’heure de début.
Aspose.Email for .NET [22.10.0.0] journal de diagnostic du client EWS

Démarré : 07.11.2022 13:40:16
  1. Requête SOAP au serveur.
07.11.2022 13:40:16	<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<soap:Header>
		<ExchangeImpersonation xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
			<ConnectingSID>
				<SmtpAddress>someaddress@someorg.onmicrosoft.com</SmtpAddress>
			</ConnectingSID>
		</ExchangeImpersonation>
		<RequestServerVersion xmlns="http://schemas.microsoft.com/exchange/services/2006/types" Version="Exchange2013" />
	</soap:Header>
	<soap:Body>
		<FindItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages" Traversal="Shallow">
			<ItemShape>
				<BaseShape xmlns="http://schemas.microsoft.com/exchange/services/2006/types">IdOnly</BaseShape>
			</ItemShape>
			<IndexedPageItemView MaxEntriesReturned="2147483647" Offset="0" BasePoint="Beginning" />
			<ParentFolderIds>
				<DistinguishedFolderId xmlns="http://schemas.microsoft.com/exchange/services/2006/types" Id="inbox" />
			</ParentFolderIds>
		</FindItem>
	</soap:Body>
</soap:Envelope>
  1. En-têtes de réponse HTTP.
07.11.2022 13:40:18	Cache-Control: private
                   	Transfer-Encoding: chunked
                   	Server: Microsoft-IIS/10.0
                   	request-id: 5c777b61-e3d9-c262-fbb0-6f071d9ff68a
                   	Alt-Svc: h3=":443", h3-29=":443"
                   	X-CalculatedFETarget: CH0PR03CU015.internal.outlook.com, BL0PR02CU002.internal.outlook.com
                   	X-BackEndHttpStatus: 200, 200, 200
                   	Set-Cookie: exchangecookie=bf07039c0ee942438170c2958ca2d330; expires=Tue, 07-Nov-2023 10:40:17 GMT; path=/; secure; HttpOnly
                   	X-CalculatedBETarget: BLAPR10MB4915.namprd10.PROD.OUTLOOK.COM
                   	X-RUM-Validated: 1
                   	x-ms-appId: 3fe84e63-c57b-48eb-ab41-879415751cfd
                   	Restrict-Access-Confirm: 1
                   	x-EwsHandler: FindItem
                   	X-AspNet-Version: 4.0.30319
                   	X-BeSku: WCS6
                   	X-DiagInfo: BLAPR10MB4915
                   	X-BEServer: BLAPR10MB4915
                   	X-Proxy-RoutingCorrectness: 1
                   	X-Proxy-BackendServerStatus: 200
                   	X-FEProxyInfo: AS9PR06CA0693.EURPRD06.PROD.OUTLOOK.COM
                   	X-FEEFZInfo: DHR
                   	X-FEServer: BL0PR02CA0063, CH0PR03CA0449, AS9PR06CA0693
                   	X-FirstHopCafeEFZ: DHR
                   	X-Powered-By: ASP.NET
                   	Date: Mon, 07 Nov 2022 10:40:17 GMT
                   	Content-Type: text/xml; charset=utf-8
  1. Réponse du serveur SOAP.
07.11.2022 13:40:18	<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<soap:Header>
		<ExchangeImpersonation xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
			<ConnectingSID>
				<SmtpAddress>someaddress@someorg.onmicrosoft.com</SmtpAddress>
			</ConnectingSID>
		</ExchangeImpersonation>
		<RequestServerVersion Version="Exchange2013" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" />
	</soap:Header>
	<soap:Body>
		<GetItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
			<ItemShape>
				<BaseShape xmlns="http://schemas.microsoft.com/exchange/services/2006/types">IdOnly</BaseShape>
				<AdditionalProperties xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
					<FieldURI FieldURI="item:Attachments" /><FieldURI FieldURI="item:DateTimeCreated" />
					<FieldURI FieldURI="item:DateTimeReceived" /><FieldURI FieldURI="item:DateTimeSent" />
					<FieldURI FieldURI="item:IsDraft" /><FieldURI FieldURI="item:IsFromMe" />
					<FieldURI FieldURI="item:HasAttachments" /><FieldURI FieldURI="item:IsUnmodified" />
					<FieldURI FieldURI="item:ItemClass" /><FieldURI FieldURI="item:IsSubmitted" />
					<FieldURI FieldURI="item:IsResend" /><FieldURI FieldURI="item:DisplayCc" /><FieldURI FieldURI="item:DisplayTo" />
					<FieldURI FieldURI="item:Attachments" /><FieldURI FieldURI="item:LastModifiedTime" />
					<FieldURI FieldURI="item:Size" /><FieldURI FieldURI="item:Subject" />
					<FieldURI FieldURI="item:InternetMessageHeaders" /><FieldURI FieldURI="message:IsRead" />
					<FieldURI FieldURI="message:InternetMessageId" /><FieldURI FieldURI="message:Sender" />
					<FieldURI FieldURI="message:CcRecipients" /><FieldURI FieldURI="message:ToRecipients" />
					<FieldURI FieldURI="message:BccRecipients" /><FieldURI FieldURI="message:From" />
				</AdditionalProperties>
			</ItemShape>
			<ItemIds>
				<ItemId
					Id="AAMkAGJhZjYzY2I5LTdjYWMtNGFmMC05ODI1LTA5MTAzYTgwZTc4OQBGAAAAAABdN1MC60QcSpWwPYUTPhL2BwATlR+p0q0wT6WD0+d4WJhWAAAAAAEMAAATlR+p0q0wT6WD0+d4WJhWAACp2kv8AAA="
					xmlns="http://schemas.microsoft.com/exchange/services/2006/types" />
			</ItemIds>
		</GetItem>
	</soap:Body>
</soap:Envelope>

Obtenez une licence API gratuite

Vous pouvez obtenir une licence temporaire gratuite pour utiliser Aspose.Email pour .NET sans limitations d’évaluation.

Conclusion

Dans cet article, vous avez appris à configurer l’enregistrement des activités dans le client EWS en utilisant C#. Cette fonctionnalité vous permet de mieux surveiller votre application cliente. De plus, vous pouvez explorer la documentation pour en savoir plus sur Aspose.Email pour .NET. De plus, vous pouvez poser vos questions via notre forum.

Voir aussi