PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV (versiones precedentes) → [WD22] Erreur aléatoire lors d'envoi courriel avec adresse Microsoft (Outlook, office365, hotmail, etc.)
[WD22] Erreur aléatoire lors d'envoi courriel avec adresse Microsoft (Outlook, office365, hotmail, etc.)
Iniciado por Maxime, 14,oct. 2021 21:25 - 6 respuestas
Miembro registrado
19 mensajes
Publicado el 14,octubre 2021 - 21:25
Bonjour à vous tous.
Plusieurs personnes nous ont contacté concernant des erreurs d'envoi courriel lorsqu'ils utilisent une adresse provenant de Microsoft. (hotmail, outlook, Exchange/Office365 , etc.) avec nos logiciels.

Fait étrange, cette situation ne se présente qu'avec ces mêmes adresses de Microsoft. Aucun problème du côté GMail ou autres fournisseurs tierces tels que GoDaddy pour n'en nommer qu'un seul.

J'ai donc conçu une mini application toute simple afin de vérifier si nous arrivions au même résultat que nos clients. (qui eux passe par un composant .Net pour l'envoi courriel plutôt que les fonctions natives de Windev)

Je vous partage le code (rien d'impressionnant ici)

EmailChangeTimeOut(20)

// Ouverture d'une session SMTP
MaSession est un emailSessionSMTP
MaSession.AdresseServeur = SAI_SMTP
MaSession.Nom = SAI_SendFrom
MaSession.Port = SAI_Port
MaSession.MotDePasse = SAI_Password
SI SEL_IfSecured = 1 ALORS
//Connexion SSL
MaSession.Option = optionSSL
FIN
SI SEL_IfSecured = 2 ALORS
//Connexion TLS
MaSession.Option = emailOptionSécuriséTLS
FIN
SI SEL_IfSecured = 3 ALORS
MaSession.Option = emailOptionDéfaut
FIN
SI EmailOuvreSession(MaSession) ALORS
//continue
SINON
Trace(ErreurInfo(errComplet))
Erreur(ErreurInfo(errComplet))
RETOUR
FIN

// Construction d'un email
MonMessage est un Email
MonMessage.Expediteur = SAI_SendFrom
Ajoute(MonMessage.Destinataire, SAI_SendTo)
MonMessage.Sujet = SAI_Subject
MonMessage.Message = SAI_Content

// Envoi du message
SI EmailEnvoieMessage(MaSession, MonMessage) ALORS
ToastAffiche("Courriel envoyé.",toastCourt,cvMilieu,chCentre,VertFoncé)
SINON
Trace("Erreur" + RC + ErreurInfo(errComplet))
Erreur("Error." + RC + "Le courriel n'a pu être envoyé pour la/les raison(s) suivante(s): " + RC + ErreurInfo(errComplet))
FIN
EmailFermeSession(MaSession)


Lors de l'ouverture de session SMTP, il arrive de recevoir l'erreur suivante :

Appel WL :
Traitement de 'Clic sur BTN_Send' (FEN_Main.BTN_Send), ligne 18, thread 0
Fonction 'EmailOuvreSession', syntaxe 10

Que s'est-il passé ?
Le mécanisme de sécurité du WLangage a détecté une erreur système.

Code erreur : 101000
Niveau : erreur non fatale

Code d'erreur système : 240

Dump de l'erreur du module 'wd220com.dll' (22.0.81.3).
Identifiant des informations détaillées (.err) : 101000
Informations de débogage :
cbData
ClientHandshakeLoop
Fonction (10,21)
Informations supplémentaires :
EIT_PILEWL :
Clic sur BTN_Send (FEN_Main.BTN_Send), ligne 18
EIT_DATEHEURE : 14/10/2021 15:18:48
EIT_TYPE_WDFILE : <2>
EIT_IDCODE : <18>


J'ignore cependant s'il s'agit ici d'un problème relié à Windev 22 ou si c'est une réponse à la connexion SMTP qui n'a pu être simplement effectué.

L'équivalent de ces erreurs sur notre composante .NET est :

System.Net.Mail.SMTPException: Échec d'envoi du courrier. --> System.IO.IOException: Échec de l'authentification, car le site distant a fermé le flux de transport.


Est-ce que certains d'entre vous avez ce même genre de situation avec les adresses provenant des services de Microsoft?

Merci!
Miembro registrado
74 mensajes
Popularité : +1 (1 vote)
Publicado el 15,octubre 2021 - 13:18
Bonjour Maxime,

J'ai un peu le même problème que vous. (voir message Daniel19 ci-dessous)
Après recherches de mon côté il s'avèrerait que cela provient des procédures anti-spam de l'hébergeur... Les messages arrivent bien chez lui et sont détruits car considérés comme spam.
J'utilise en gros le même code que vous.
Bonne fin de journée à vous.
Miembro registrado
19 mensajes
Publicado el 15,octubre 2021 - 20:14
Bonjour Daniel,

Dans notre cas, il ne s'agit pas des procédures anti-spam malheureusement car en cas de spam, l'erreur diffère.

J'ai ajouté la ligne de code suivante pour changer le mode d'envoi des courriels :
EmailParamètre(emailParamètreMode,1)


Avec cet ajout, mon mini application ne fait génère plus aucune erreur.

Ceci dit, je tente de comprendre ce qui empêche de façon totalement aléatoire l'authentification au serveur SMTP lors de l'ouverture de session depuis le composant en .NET que nous avions ajouté à notre application à l'époque.

Mais je suspecte fortement Microsoft de migrer leurs serveurs SMTP sous le protocole TLS v1.2 en différentes vagues si je me fis à l'article suivant sorti le 5 octobre dernier :

https://docs.microsoft.com/en-us/microsoft-365/compliance/prepare-tls-1.2-in-office-365…

Donc lors de l'envoi courriel, il semble que de temps à autres, l'adresse SMTP nous redirige vers des serveurs encore compatibles sous TLS 1.0 / 1.1 et que parfois, ça redirige vers un serveur migré vers TLS 1.2 seulement, ce qui explique les erreurs qui varient d'une tentative à une autre.
Publicado el 25,octubre 2021 - 14:30
Merci pour le partage de cette réponse Maxime !

Pour info en 24 il y a le meme soucis. Je n'ai pas eu le temps de tester en 26. Toujours est il qu'à première vue la commande emailParamètre fonctionne.
Et bien je suis bon pour un update chez tous mes clients bossent sous 365....
Miembro registrado
19 mensajes
Publicado el 26,octubre 2021 - 17:01
Bonjour Tom A,

Avez-vous essayer de changer le paramètre en utilisant "EmailParamètre(emailParamètreMode,1)" ??

Je sais que l'aide de Windev stipule qu'il n'est pas nécessaire de le faire pour les versions supérieures à la version 22 mais j'ai remarqué que sans déclarer cette ligne avant l'ouverture de la session SMTP, l'envoi est tenté en TLS 1.0.

Voici le résultat qui prouve l'envoi en TLS 1.0 quand nous tentons l'envoi sans "EmailParamètre(emailParamètreMode,1)"

Received: from MSI.xxxx.xxxx (xx.xx.xx.xx) by YQBPR0101CA0257.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:68::6) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA) id 15.20.4628.16 via Frontend Transport; Tue, 26 Oct 2021 14:55:24 +0000


comme vous pouvez constater, version = TLS1_0.

Voici le résultat quand nous tentons l'envoi AVEC "EmailParamètre(emailParmaètreMode,1)"

Received: from MSI.xxxx.xxxx (xx.xx.xx.xx) by YQBPR01CA0044.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:2::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.13 via Frontend Transport; Tue, 26 Oct 2021 14:54:05 +0000


Dans celle-ci , version = TLS1_2 .

Depuis ce changement de mon côté, plus aucun problème.

En espérant que ceci vous aura aider.

Bonne chance!
Publicado el 28,octubre 2021 - 15:42
Bonjour Maxime,
On vient de me remonter le même problème et effectivement EmailParamètre(emailParmaètreMode,1) fait le job.
Merci pour ces informations ton post m'a fait gagner beaucoup de temps.
Cordialement,
Publicado el 22,noviembre 2021 - 17:17
Bonjour à tous,
J'ai eu les mêmes problèmes d'envoi de mails avec Office365 et Windev.
Le support MS m'avait fait ajouter un connecteur dans Office365 mais ça ne corrigeait pas le problème.
Effectivement le "EmailParamètre(emailParmaètreMode,1)" corrige le problème d'envoi de mails.
Merci à vous.
Patrick