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 20:25 - 2 respuestas
Miembro registrado
7 mensajes
Publicado el 14,octubre 2021 - 20: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
59 mensajes
Publicado el 15,octubre 2021 - 12: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
7 mensajes
Publicado el 15,octubre 2021 - 19: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.