Optimiser la connexion au serveur SMTP
Optimisation des connexions du client de messagerie
Les utilisateurs rencontrent souvent des retards en raison des paramètres de délai d’attente par défaut, ce qui peut entraîner des temps de connexion prolongés voire des échecs.
Pour améliorer l’efficacité de ces connexions, Aspose.Email pour .NET propose des propriétés telles que Délai d’attente et GreetingTimeout. Alors que le Timeout propriété gère la durée globale des opérations de messagerie, le GreetingTimeout propriété cible spécifiquement le temps nécessaire au serveur pour envoyer une chaîne de salutation lors de la connexion.
Dans la section suivante, nous explorerons comment configurer ces paramètres afin d’améliorer la vitesse et la fiabilité de connexion de votre client de messagerie.
Lors de l’utilisation du Timeout propriété, il est important de noter que les valeurs qui lui sont assignées doivent avoir des intervalles suffisamment longs pour accueillir des opérations prolongées.
Cependant, se fier uniquement à cette propriété peut entraîner un établissement de connexion plus long que prévu. Cela peut se produire lorsque le client de messagerie utilise le mode automatique pour établir la connexion. Dans ce mode, le client parcourt divers paramètres de connexion jusqu’à ce qu’une connexion soit établie.
Lors de la connexion à des serveurs SMTP, IMAP et POP3, une chaîne de salutation est envoyée au client après l’établissement réussi de la connexion. Les serveurs peuvent utiliser une initiation de connexion SSL/TLS implicite ou explicite (START TLS). Dans les cas où le mode de connexion ne correspond pas (par exemple, le serveur attend une connexion SSL implicite tandis que le client tente d’établir une connexion non sécurisée ou SSL explicite), le serveur n’enverra pas de chaîne de salutation.
En conséquence, l’utilisateur peut attendre pendant une période prolongée jusqu’à ce que le délai d’attente soit atteint, et le client passe à l’option de connexion suivante.
Pour résoudre ce problème, le GreetingTimeout propriété a été introduite. Cette propriété permet aux utilisateurs de définir un délai d’attente pour la chaîne de salutation, réduisant le temps nécessaire à l’établissement d’une connexion automatique. En implémentant le GreetingTimeout propriété, les utilisateurs peuvent optimiser les performances de leur client de messagerie et éviter de longs temps d’attente lors de l’établissement de la connexion.
L’exemple de code suivant montre comment définir le EmailClient.GreetingTimeout propriété :
using (SmtpClient client = new SmtpClient("localhost", 25, "username", "password"))
{
client.GreetingTimeout = 4000;
}
Récupérer les extensions du serveur
Le SmtpClient vous permet de récupérer les extensions de serveur qu’un serveur prend en charge telles que IDLE, UNSELECT, QUOTA, etc. Cela aide à identifier la disponibilité d’une extension avant d’utiliser le client pour cette fonctionnalité particulière. Le GetCapabilities() méthode renvoie les types d’extension supportés sous forme de tableau de chaînes.
Le fragment de code suivant vous montre comment récupérer les extensions du serveur.
Valider les informations d’identification du serveur de messagerie sans envoyer d’e-mails
L’API Aspose.Email offre la possibilité de valider les informations d’identification du serveur de messagerie sans envoyer d’e-mail. Cela peut être réalisé avec le ValidateCredentials méthode responsable de la vérification de l’authenticité et de la validité des informations d’identification de messagerie fournies, généralement utilisées pour l’authentification lors de la connexion au serveur.
Elle vérifie que les informations d’identification de messagerie fournies, comme le nom d’utilisateur et le mot de passe, sont valides et que le client peut établir une connexion réussie au serveur. Cette vérification des informations d’identification aide à garantir que le client peut accéder à son compte de messagerie en toute sécurité et effectuer diverses opérations, comme l’envoi d’e-mails.
using (SmtpClient client = new SmtpClient(server.SmtpUrl, server.SmtpPort, "username", "password", SecurityOptions.Auto))
{
client.Timeout = 4000;
if (client.ValidateCredentials())
{
//to do something
}
}
Il existe également une version de la méthode ValidateCredentialsAsync pour effectuer une opération asynchrone.
Envoyer un courriel via un serveur proxy SOCKS
Dans de tels cas, les clients de messagerie ne peuvent pas communiquer sur Internet sans spécifier l’adresse du proxy. Aspose.Email prend en charge les versions 4, 4a et 5 du protocole proxy SOCKS. Pour envoyer un courriel via un serveur proxy, suivez les étapes suivantes :
- Initialisez le proxy avec les informations requises, à savoir l’adresse du proxy, le port et la version SOCKS.
- Initialiser SmtpClient avec l’adresse de l’hôte, le nom d’utilisateur et le mot de passe, ainsi que tout autre paramètre.
- Définissez la propriété Proxy du client sur le Proxy objet créé précédemment.
Le fragment de code suivant vous montre comment se connecter à un serveur via un serveur proxy.
Envoyer un e-mail via un serveur proxy HTTP
Identifier les méthodes d’authentification pour une connexion SMTP sécurisée
Aspose.Email propose des propriétés permettant de vérifier quelles méthodes d’authentification peuvent être utilisées pour établir une connexion sécurisée avec le serveur SMTP avant d’envoyer un e-mail :
- le SmtpClient.SupportedAuthentication propriété renvoie une liste des méthodes d’authentification prises en charge par le serveur SMTP.
- le SmtpClient.AllowedAuthentication propriété renvoie une liste des méthodes d’authentification définies par l’utilisateur.
smtpClient.AllowedAuthentication = SmtpKnownAuthenticationType.Login;
Charger les informations d’authentification SMTP depuis le fichier CONFIG
Pour qu’Aspose.Email puisse lire un fichier de configuration, celui-ci doit être au bon format. Ci-dessous, nous présentons un exemple de fichier de configuration XML suivi du code qui le lit. L’extrait de code suivant montre comment charger les informations d’authentification SMTP depuis un fichier CONFIG.
Une fois les paramètres de configuration définis, chargez-les directement dans une instance de la SmtpClient classe utilisant l’un de ses constructeurs surchargés. L’extrait de code suivant montre la lecture des paramètres de configuration depuis le fichier de configuration et leur chargement directement dans l’instance de la SmtpClient.
Lier le client SMTP à une adresse IP spécifique
La possibilité qu’un hôte dispose de plusieurs ports disponibles pour l’envoi d’e-mails ne peut être exclue. Dans de tels cas, il peut être nécessaire de lier le client d’envoi d’e-mails à un port spécifique de l’hôte pour l’envoi d’e-mails. Cela peut également être réalisé avec l’API Aspose.Email en utilisant le SmtpClient BindIPEndPoint propriété. L’API SmtpClient peut être défini pour utiliser une adresse IP spécifique sur l’hôte en spécifiant le point de terminaison IP spécifique. Le fragment de code suivant vous montre comment lier le client SMTP à une adresse IP spécifique sur l’hôte.
Définir le délai d’attente pour les opérations de messagerie
Chaque opération de messagerie prend du temps en fonction de nombreux facteurs (délais réseau, taille des données, performance du serveur, etc.). Vous pouvez définir un délai d’attente pour toutes les opérations de messagerie. L’exemple de code ci‑dessus montre comment faire cela en utilisant le Délai d’attente propriété.
Remarque : vous ne devez pas définir de valeurs élevées afin d’éviter de longues attentes dans votre application.
using (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
smtpClient.Timeout = 60000; // 60 seconds
// some code...
}
Utilisation des protocoles cryptographiques
Aspose.Email prend en charge les protocoles cryptographiques SSL (obsolète) et TLS pour assurer la sécurité des communications. Vous pouvez activer le chiffrement cryptographique afin de protéger les échanges de données entre votre application et les serveurs de messagerie.
NOTE: Vous ne devez définir que les versions du protocole prises en charge par le .NET Framework. Si certaines versions du protocole cryptographique ne sont pas supportées par votre version actuelle du .NET Framework, elles seront ignorées et sautées. Dans ce cas, aucune exception ne sera générée. Veuillez utiliser SetSupportedEncryptionUnsafe méthode si vous souhaitez définir les protocoles sans aucune vérification de compatibilité.
L’exemple de code ci‑dessous vous montre comment définir TLS 1.3 pour SmtpClient instance de classe.
using (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
smtpClient.SupportedEncryption = EncryptionProtocols.Tls13;
// some code...
}
Dans le cas où un protocole de chiffrement spécifié n’est pas supporté dans la version actuelle du .NET Framework, la différence de comportement entre SetSupportedEncryptionUnsafe méthode et SupportedEncryption propriété est la suivante :
- Si SupportedEncryption propriété est utilisée, le client de messagerie rétrograde le protocole de chiffrement à un niveau pris en charge.
- Si SetSupportedEncryptionUnsafe méthode est utilisée, le client de messagerie lève des exceptions.
Authentification SMTP avec le mécanisme CRAM-MD5
Le mécanisme d’authentification CRAM-MD5 d’Aspose.Email pour .NET offre une couche de sécurité supplémentaire lors de l’accès au serveur. L’extrait de code suivant montre comment implémenter cette fonctionnalité dans votre projet :
smtpClient.AllowedAuthentication = SmtpKnownAuthenticationType.CramMD5;