|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Accueil → WINDEV 2024 → Envoies de Mail par SMTP : Serveur Office365, comment envoyer mon mail ? |
Envoies de Mail par SMTP : Serveur Office365, comment envoyer mon mail ? |
Débuté par Ralph IGCI, 26 jan. 2023 19:17 - 10 réponses |
| |
| | | |
|
| |
Membre enregistré 417 messages Popularité : +6 (6 votes) |
|
Posté le 26 janvier 2023 - 19:17 |
Bonjour, J'ai le code que voici : objSMTPSession est un emailSessionSMTP
objSMTPSession.Nom = "pierre.xxp@outlook.com" objSMTPSession.MotDePasse = "xxxx" objSMTPSession.AdresseServeur = "smtp.office365.com" objSMTPSession.Port = 587
Sablier(Vrai)
OPTIONS_EMISSION est entier=2
SELON OPTIONS_EMISSION CAS 1: CAS 2: objSMTPSession.Option =emailOptionSécuriséTLS CAS 3: objSMTPSession.Option = optionSSL AUTRE CAS dbgAssertion(Faux, "Valeur non géré") FIN EmailParamètre(emailParamètreMode, 1)
EmailChangeTimeOut(25)
SI EmailOuvreSession(objSMTPSession) = Vrai ALORS EmailChangeTimeOut(1*60) RENVOYER Vrai SINON RENVOYER Faux FIN
CAS ERREUR: RENVOYER Faux CAS EXCEPTION: RENVOYER Faux FIN: Sablier(Faux) EmailFermeSession(objSMTPSession)
Ca fonctionne bien.
quand j'essaie d'envoyer en insérant au niveau de //testenvois le code ci-dessous
IF EnModeTest() THEN UnCourriel est un Email UnCourriel.Expediteur="PAUL LE MARCHAND" UnCourriel.AdresseExpéditeur = "blpierre@outlook.fr" UnCourriel.Destinataire[1] = "papa@outlook.com" UnCourriel.Sujet = "Envoi d'un email depuis WINDEV." UnCourriel.Message = "Envoi d'un message email depuis WINDEV." SI EmailEnvoieMessage(objSMTPSession, UnCourriel) = Faux ALORS Erreur("L'envoi de l'email a échoué.", ErreurInfo(errMessage)) FIN FIN
J'ai l'erreur suivante
--------------------------- Fiche Compte --------------------------- L'envoi de l'email a échoué.
L'envoi du message a échoué.
Vérifiez les adresses de destination ainsi que les paramètres de votre compte (adresse d'expéditeur).
L'échec peut être dû à un problème technique.
Après 4 tentatives successives, voici le détail des incidents rencontrés :
- Premier essai :
La dernière réponse du serveur SMTP est :
<503 5.5.1 Bad sequence of commands
>
- Deuxième essai :
La dernière réponse du serveur SMTP est :
<503 5.5.1 Bad sequence of commands
essai2
- Troisième essai :
La dernière réponse du serveur SMTP est :
<503 5.5.1 Bad sequence of commands
>
- Quatrième essai :
La dernière réponse du serveur SMTP est :
<503 5.5.1 Bad sequence of commands
Message modifié, 26 janvier 2023 - 19:19 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 58 messages Popularité : +6 (6 votes) |
|
Posté le 27 janvier 2023 - 08:36 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 417 messages Popularité : +6 (6 votes) |
|
Posté le 27 janvier 2023 - 09:37 |
Bonjour Richard, L'erreur persiste sur le premier lien, pour le second Je ne vois pas comment obtenir les deux paramètres fondamentaux.
OAuth2Params.ClientID = "01234567890123456789" OAuth2Params.ClientSecret = "98765432109876543210" J'ai mon compte outlook.fr. MerciMessage modifié, 27 janvier 2023 - 09:40 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 37 messages Popularité : +1 (1 vote) |
|
Posté le 30 janvier 2023 - 15:52 |
Bonjour, il faut que l'adresse de l'expéditeur soit identique au nom lié à l'ouverture de la cession. Et pour ma part, j'ai fait comme Richard, je suis passé par l'API Graph et là plus de pb.
-- Cordialement |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 417 messages Popularité : +6 (6 votes) |
|
Posté le 31 janvier 2023 - 10:19 |
Bonjour, en regardant tous les codes en ligne, j'ai fait ceci :
cstApiOutlookClientID est une chaîne UNICODE = "XXXXXXXXX-bd4e-4386-8676-7b70dd947" cstApiOutlookIDClientSecret est une chaîne UNICODE = "d.........-c1c0-4328-956d-97aedf09a9d7" cstApiOutlookClientSecret est une chaîne UNICODE = "ddddddd" cstApiTenantID est une chaîne = "xxxxxxxxx-edba-cccc-8801-mpmllllddd..."
OAuth2Params est OAuth2Paramètres OAuth2Params..ClientID = cstApiOutlookClientID OAuth2Params..URLAuth = "https://login.microsoftonline.com/"+cstApiTenantID+"/oauth2/v2.0/authorize" OAuth2Params..URLToken = "https://login.microsoftonline.com/"+cstApiTenantID+"/oauth2/v2.0/token" OAuth2Params..ClientSecret = cstApiOutlookClientSecret OAuth2Params..URLRedirection = "http://localhost:9874" OAuth2Params..ParamètresSupplémentaires = "force_reapprove=false" OAuth2Params..Scope = "offline_access User.Read https://outlook.office.com/SMTP.Send"
cExpediteur est une chaîne = "nepasrepondre..."
MaSessionSMTP est un emailSessionSMTP MaSessionSMTP.AdresseServeur = "smtp.office365.com" MaSessionSMTP.Port = 587 MaSessionSMTP.Option = emailOptionSécuriséTLS MaSessionSMTP.AuthToken = AuthIdentifie(OAuth2Params) Info(MaSessionSMTP.AuthToken.Valeur)
Mon Token est Vide , et l'erreur est la suivante
Vous avez appelé la fonction 'Authldentifie'. Erreur à l'authentification : <invalid client Description: AADSTS700025: Client is public so neither 'client_assertion'*** passez à la version PRO pour avoir le texte complet ***
Que manque-t-il ?Message modifié, 31 janvier 2023 - 10:21 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 37 messages Popularité : +1 (1 vote) |
|
Posté le 31 janvier 2023 - 14:22 |
Bonjour, pour ma part je ne modifie par les URL, voici une partie du code que j'utilise pour me connecter à l'api graph
Parametre_API est une Structure URL_API est une chaîne URL_Scope est une chaîne URL_Redirection est une chaîne URL_Auth est une chaîne URL_Token est une chaîne Client_ID est une chaîne Client_Secret est une chaîne FIN
gstParametre_API_GRAPH est API_GRAPH.Parametre_API
gstParametre_API_GRAPH.URL_API = "https://graph.microsoft.com/v1.0" gstParametre_API_GRAPH.Client_ID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" gstParametre_API_GRAPH.Client_Secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" gstParametre_API_GRAPH.URL_Auth = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize" gstParametre_API_GRAPH.URL_Token = "https://login.microsoftonline.com/common/oauth2/v2.0/token" gstParametre_API_GRAPH.URL_Redirection = "http://localhost:9874" gstParametre_API_GRAPH.URL_Scope = "https://graph.microsoft.com/"
m_ParamIdentification est un OAuth2Paramètres
PROCÉDURE Constructeur(LOCAL p_ParametreConnexionAPI est une Parametre_API)
:m_ParamIdentification.URLAuth = p_ParametreConnexionAPI.URL_Auth :m_ParamIdentification.URLToken = p_ParametreConnexionAPI.URL_Token
:m_ParamIdentification.ClientID = p_ParametreConnexionAPI.Client_ID :m_ParamIdentification.ClientSecret = p_ParametreConnexionAPI.Client_Secret
:m_ParamIdentification.URLRedirection = p_ParametreConnexionAPI.URL_Redirection
:m_URLScope = p_ParametreConnexionAPI.URL_Scope :m_URL = p_ParametreConnexionAPI.URL_API
TOKEN_MICROSOFT est un AuthToken
TOKEN_MICROSOFT = AuthIdentifie(:m_ParamIdentification) SI TOKEN_MICROSOFT.Valide = Faux ALORS ::m_Objet_Erreur:mtd_TraceErreur("Demande de Token refusée par microsoft") ::m_Objet_Erreur:mtd_TraceErreur("motif : " + RC + TOKEN_MICROSOFT.RéponseServeur) RENVOYER Faux SINON // En MODE DEBUG ::m_Objet_Erreur:mtd_TraceErreur("Demande de Token acceptée") vTOKEN = JSONVersVariant(TOKEN_MICROSOFT.RéponseServeur)
-- Cordialement |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 417 messages Popularité : +6 (6 votes) |
|
Posté le 31 janvier 2023 - 14:53 |
Merci Laurent CM, Par une manoeuvre non maitrisé , j'avais eu le Token mais la suite, Voici mon code
VarSessionSMTP est un emailSessionSMTP
VarSessionSMTP.AdresseServeur = "smtp.office365.com"
VarSessionSMTP.Port = 587 VarSessionSMTP.Option = emailOptionSécuriséTLS VarSessionSMTP.AuthToken = MonToken Info(MonToken ..Valeur)
SI VarSessionSMTP.AuthToken <> Null ALORS SI EmailOuvreSession(VarSessionSMTP) = Faux ALORS ELSE UnCourriel est un Email
UnCourriel.Expediteur = "monnom@outlook.fr" UnCourriel.AdresseExpéditeur = "monnom@outlook.fr" UnCourriel.Destinataire.Ajoute("sonnom@outlook.com") UnCourriel.Sujet = "Envoi d'un email depuis WINDEV." UnCourriel.Message = "Envoi d'un message email depuis WINDEV." SI EmailEnvoieMessage(VarSessionSMTP, UnCourriel,emailOptionEncodeEntête) = Faux ALORS Erreur("L'envoi de l'email a échoué.", ErreurInfo(errMessage)) ELSE Info("Envoyé") FIN FIN FIN
Message d'erreur Le contenu de Email.Expediteur n'est pas reconnu par le serveur. La transaction est refusée. La dernière réponse du serveur SMTP est : <530 5.7.57 Client not authenticated to send mail. [CPYP284CA0062.BRAP284.PROD.OUTLOOK.COM 2023-01-31T13:48:50.113Z 08DB0368763E42DC] > J'ai changé UnCourriel.Expediteur et j'ai mis le nom et prénom, puis prénom et nom, rien D'ailleurs, c'est quand je mets l'adresse mail, que ça semple mieux MerciMessage modifié, 31 janvier 2023 - 15:00 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 83 messages Popularité : +4 (4 votes) |
|
Posté le 01 février 2023 - 19:31 |
Bonjour,
Microsoft a définitivement coupé le 27/01/2023 l'authentification "faible" à Office 365 par user/password. OAuth2 obligatoire désormais.
J'ai une question d'ordre plus générale à tous ceux qui ont anticipé cette coupure : arrivez vous à récupérer un token d'identification valide avec l'instruction Windev AuthIdentifie ? Ca me semble être un préalable indispensable à l'utilisation des autres instructions EmailOuvreSession() et consorts.
Personnellement je n'y parviens pas. Seule la méthode par l'API Rest fonctionne, celle décrite par le ST PCsoft ici : https://blogs.pcsoft.fr/fr/exemple-utilisation-api-rest-microsoft-graph-envoyer-email-passer-traditionnel-serveur-smtp/281474976711046/read.awp Grâce à cet exemple j'obtiens un token valide, que j'arrive même à transférer dans un objet OAuth2Paramètres puis dans un objet emailSessionIMAP mais impossible ensuite d'ouvrir une session par EmailOuvreSession().
Je me demande si cela est réellement possible ou si, comme je le crains, l'utilisation de l'API Graph (et donc l'abandon pur et simple des instructions Windev de gestion des emails) est un passage obligé ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 messages |
|
Posté le 01 mars 2023 - 11:30 |
bonjour
je te confirme que ca fonctionne, j'ai comme beaucoup eu les meme galères mais c'est en place chez l'un de mes clients le seul "problème" qu'il me reste à régler est la durée de validité du jeton obtenu... actuellement le client doit refaire l'authentification forte toutes les 68 minutes |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 417 messages Popularité : +6 (6 votes) |
|
Posté le 01 mars 2023 - 13:34 |
Bonjour, tu peux partager ta misère si c'est possible ? J'ai même fini par recevoir un code qui marchait sur le contact, mais je n'ai pas eu les détails pour la messagerie. Pour dire vrai j'ai suspendu la recherche parce que je n'ai jamais pu, à un moment je ne savais plus si mon compte était un problème ou pas. Merci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 58 messages Popularité : +6 (6 votes) |
|
Posté le 20 novembre 2023 - 08:59 |
Le dernier message date un peu mail PC Soft ne m'a prévenu qu'aujourd'hui qu'il y avait du nouveau dans la discussion.
Xav Nod : pour régler ton problème d'authentification, il faut que dans le compte Azure de tes clients, tu donnes une autorisation "Déléguée" pour l'envoi de mails -> Mail.ReadWrite. Sinon tu risques de na pas pouvoir régler ton problème.
-- Qui ne sait rien, de rien ne doute... |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|