|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Débuté par Robert, 02 fév. 2021 12:04 - 16 réponses |
| |
| | | |
|
| |
Membre enregistré 16 messages Popularité : +3 (3 votes) |
|
Posté le 02 février 2021 - 12:04 |
Bonjour à tous, j'espère que vous êtes tous en bonne santé.
J'espère que vous accepterez ma demande. En effet, enseignant retraité j'aide gratuitement des écoles. Je suis actuellement confronté à l'envoi des documents par mail. Je ne connais rien en programmation objet!!! J'ai regardé WD Mail, mais je suis dépassé et ne suis pas arrivé à me connecté à Gmail!
Les contraintes que j'ai sont: - utilisation par l'école de Gmail, mais ne veulent pas de programme de mail sur leur machine donc utilise webmail. - (sur mon pc j'arrive à remplir le programme de mail, avec une chose bizarre, il prend par défaut outlook alors que j'utilise courrier de win10)!
Ma question est:
Est-il possible par exemple de palier à ce problème de connexion - en plaçant un champ html pour ouvrir la page de connexion de Gmail (où la personne entrerait son mail et mot de passe) - étant alors connecté de pouvoir envoyer les mails avec les documents attachés automatiquement par programmation.
Dans l'affirmative, pouvez-vous me mettre sur la voie.
Si vous avez d'autres solutions, je suis preneur. Si vous préférez un contact en privé, je peux vous communiquer mon mail.
Je remercie d'avance, tous ceux qui auront pris un peu de temps pour lire ma demande. Bonne journée à tous >Robert |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 70 messages Popularité : +8 (8 votes) |
|
Posté le 02 février 2021 - 16:18 |
Bonjour,
Je te cite : (sur mon pc j'arrive à remplir le programme de mail, avec une chose bizarre, il prend par défaut outlook alors que j'utilise courrier de win10)! Vérifie l'application par défaut de messagerie définit sous windows pour définir l'application a lancer.
Si j'ai bien compris ta problématique. Voici un lien pour t'aider à faire la connexion avec gmail : https://gsuitefr.blogspot.com/2019/09/outlook-et-gmail-pensez-au-mot-de-passe.html Si tu arrives à remplir ton mail par programmation, il te suffit d'établir la connexion avec gmail.
SMTPUser,sSMTPMDP,sSMTPADR,sSMTPPORTsont des chaînes SI PASEmailOuvreSessionSMTP(SMTPUser,sSMTPMDP,sSMTPADR,sSMTPPORT,Faux,emailOptionSécuriséTLS+optionSSL)ALORS Erreur("Erreur lors de l'ouverture de la session SMTP. Contactez votre responsable informatique avec le message suivant.","Paramètre : "+SMTPUser+" / "+sSMTPMDP+" / "+sSMTPADR+" / "+sSMTPPORT,ErreurInfo(errComplet))
RENVOYERFaux FIN et de remplacer
EmailLanceAppli() par
SI PASEmailEnvoieMessage(SMTPUser)ALORS Erreur("Erreur lors de l'envoi de mail à "+sDestinataire+" par "+sExpediteur,"Contactez votre responsable informatique avec le message suivant.",ErreurInfo(errMessage)) FIN
EmailFermeSession(SMTPUser) > |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 16 messages Popularité : +3 (3 votes) |
|
Posté le 02 février 2021 - 22:39 |
Bonjour,
Merci Laurent d'avoir pris le temps de me répondre.
J'ai testé, rapidement, mais je n'ai pas de connexion au serveur. J'ai rapidement parcouru le lien fourni, et je vais essayer de configurer mon compte gmail pour avoir un second mot de passe. Peut être que j'aurai l'accès. Dès que j'ai l'occasion, je teste et t'informe du résultat. Pour info, ma version de wd (26) refuse l'emploi simultané de emailOptionSécuriséTLS+OptionSSL, pour mon essais j'ai supprimé la seconde (SSL).
Bonne journée >Robert |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 213 messages Popularité : +12 (12 votes) |
|
Posté le 03 février 2021 - 03:17 |
Bonsoir Robert,
Nul besoin de "programmation objet" pour faire ce que vous voulez. Un code bien structuré suffira amplement.
Je n'ai pas d'expérience Windev avec gMail ouvert en fureteur. Désolé de ne pouvoir vous aider sur ce point.
Pour expédier des courriels par SMTP il y a des prérequis à respecter. Ci-après les notes que je me suis laissé concernant gMail.
//--- Doit correspondre à l'adresse du compte SMTP utilisé ("adresse@domaine.xyz") // Expéditeur // AdresseExpéditeur // Nom
//--- gMail (adresse@gmail.com) //https://support.google.com/a/answer/176600… //https://support.google.com/accounts/answer/185833 // // vsSMTPSession..AdresseServeur = "smtp.gmail.com" // vsSMTPSession..Port = 587 // TLS // vsSMTPSession..Nom = "adresse@gmail.com" // vsSMTPSession..MotDePasse = "ApplicationPassword" // vsSMTPSession..Option = emailOptionSécuriséTLS
Pour info: vsSMTPSession est un emailSessionSMTP
Dans ces notes, je remarque que gMail exige un "mot de passe d'application". Ce que semble confirmer le second lien URL.
Une subtilité très importante qui mérite votre attention. Je vous suggère d'ailleurs la lecture des deux liens proposés.
Le mot de passe d'application est réaliste dans un contexte mono utilisateur. Il devient, selon moi, complexe dans un contexte multi étudiants.
Je suis conscient de ne pas résoudre votre problème.
Bon dev.
Serge
-- ----- >Parfois, la logique est implacable... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 16 messages Popularité : +3 (3 votes) |
|
Posté le 03 février 2021 - 16:24 |
Bonjour, @Monsieur Serge
Grand merci pour ce complément d'information, que j'ai lu avec attention. Je vais lire les liens fournis, et espère trouver mon bonheur à savoir réussir à me connecter.
Je ne comprend pas encore la notion de "mot de passe d'application". Est-il valable uniquement sur une machine pour l'application. Est-il valable pour l'application quelle que soit la machine? Faut-il le générer quand le programme est terminé ? Faut-il le générer sur le poste ou le programme va tourner? Que se passe-t-il si on renomme le programme...
Encore bien des questions auxquelles je dois m'attacher.
Merci beaucoup et bonne journée.
>Robert |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 213 messages Popularité : +12 (12 votes) |
|
Posté le 05 février 2021 - 04:47 |
Robert,
Déjà, statuons sur le fait que je ne suis pas l'expert en la matière. J'ai simplement eu à faire l'envoi de courriel gMail via SMTP.
Comme gMail ne pourra reconnaître votre application comme étant "sécuritaire" il vous imposera l'utilisation du mot de passe d'application. Si vous trouvez comment faire sans le dit mot de passe, je suis preneur.
Je vous suggère de procéder par étape.
1) Utilisez votre compte gMail pour faire vos essais Confirmez que vous pouvez vous authentifier.
2) Activer l'authentification en deux étapes https://support.google.com/accounts/answer/185839
3) Créer un mot de passe d'application https://support.google.com/accounts/answer/185833 Prendre en note du mot de passe d'application!
Une fois ces étapes complétées, il sera temps de tester avec Windev. Voir les références de code que je proposais précédemment.
À vous de dire quels sont vos progrès.
Bon dev.
Serge
-- ----- >Parfois, la logique est implacable... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 213 messages Popularité : +12 (12 votes) |
|
Posté le 05 février 2021 - 05:00 |
J'oubliais votre question de base...
Je ne comprend pas encore la notion de "mot de passe d'application". - Est-il valable uniquement sur une machine pour l'application. - Est-il valable pour l'application quelle que soit la machine? - Faut-il le générer quand le programme est terminé ? - Faut-il le générer sur le poste ou le programme va tourner? - Que se passe-t-il si on renomme le programme...
Aucune de ces réponses.
C'est un mot de passe "spécial" que gMail propose pour une "application tierce" "non sécuritaire". Votre logiciel Windev dans le cas qui nous occupe.
Il est généré depuis le site de gMail. https://support.google.com/accounts/answer/185833
Il est "portable" et nous pourrions tous deux l'utiliser dans deux applications distinctes. C'est donc un mot de passe "secret" que vous ne devez pas divulguer. Comme tout autre mot de passe d'ailleurs.
Ce mot de passe sera valide tant qu'il ne sera pas révoqué par le propriétaire du compte gMail. Ou tant que gMail ne suspectera pas son utilisation douteuse. Ou tant que les règles ne changeront pas.
Microsoft offre une approche similaire pour Office365.
Serge
-- ----- >Parfois, la logique est implacable... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 898 messages Popularité : +227 (347 votes) |
|
Posté le 05 février 2021 - 06:49 |
Bonjour, Monsieur Serge a écrit :
Ou tant que les règles ne changeront pas.
C'est à dire dans un mois ou deux. Le gros problème des API Google (GoogleMap, GMail, etc) c'est qu'elles évoluent très vite. En éxagérant à peine, lorsque l'on développe une application autour de ces API, il faut engager quelqu'un à temps complet pour les maintenir.
-- >Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 16 messages Popularité : +3 (3 votes) |
|
Posté le 06 février 2021 - 01:49 |
Bonjour,
@Serge, encore merci pour toute cette attention. Je n'ai pas eu beaucoup de temps pour faire des essais. J'ai reçu la dernière lst où un exemple est donné dans wd mail. J'ai galéré dans les pages et onglets du site google qui ne correspondent pas exactement à ceux présentés par pcsoft. J'ai réussi pour finir a obtenir un identifiant et un code secret qui fonctionnent avec wd mail. Je n'ai pas encore eu le temps de regarder comment c'est codé dans wd mail. C'est quand même galère. On ne sait pas toujours que répondre aux options demandées par google, ne sachant pas quelles sont leurs utilités! Il semble que, si j'ai bien compris, que c'est valable pour des tests, il faut se mettre également dans la liste des 100 personnes autorisées pour réussir à se connecter! Dès que j'aurais du temps et du courage, je me relancerai pour obtenir de nouveaux codes pour mon application. La solution "amateur" que j'ai utilisé pour avancer et qui fonctionne: J'ai créé un compte gmail que j'ai configuré dans Outlook (j'ai du convaincre de l'utiliser!) Je crée chaque mail que je lance avec EmailLanceAppli Une fenêtre complétée prête à l'envoi s'affiche (modif ou complément encore possible), il reste à cliquer sur envoyer. C'est un peu galère, mais comme à chaque envoi le nombre n'est pas trop important...
@Voroltinquo, merci de t'intéresser à mon problème. Au vu de la galère pour obtenir ces codes, j'aurais tendance à me ranger à ton avis. Néanmoins, il faudra trouver des solutions, soit chez un autre prestataire, où cela serait plus simple à mettre en oeuvre, soit ...
Encore merci à vous deux et bonne journée.
>Robert |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 898 messages Popularité : +227 (347 votes) |
|
Posté le 06 février 2021 - 07:31 |
Si c'est pour une utilisation interne, il y a la possibilité de monter un serveur mail avec des outils du genre https://www.hmailserver.com
-- >Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 40 messages |
|
Posté le 06 février 2021 - 08:49 |
Bonjour Robert, Si vous souhaitez utiliser GMAIL par exemple il y a a solution de vous inscrire sur le site de google développeur et de créer un projet sur lequel vous activez l'API Gmail.
En suite il vous faudra créer une clé. une fois ces éléments vous n'aurez plus qu'a faire le codage suivant:
sur le fenêtre dans "PROCEDURE (ma fenêtre) :
STTokenest une structure sAccesest une chaîne sRefreshest une chaîne dhLimiteValiditeest unDateHeure Dossierest une chaîne FIN STCompteGmailest une structure AdresseMailest une chaîne OAuthest un OAuth2Paramètres Tokenest unSTToken FIN CompteGmailest unSTCompteGmail
CompteGmail.AdresseMail=gsMail_Utilisateur
AVECCompteGmail.OAuth ..ClientID="votre client ID donné par google" ..ClientSecret="votre client secret donné par google" ..URLAuth="https://accounts.google.com/o/oauth2/auth" ..URLToken="https://accounts.google.com/o/oauth2/token" ..Scope="https://www.googleapis.com/auth/gmail.send" FIN
CompteGmail.Token.Dossier="répertoire où sauvegarder la clé api au format json"
puis de créer un bouton avec le code suivant :
sMessageest une chaîne= (ChaîneConstruit(Config_Relance_Clients.Message_Relance,SAI_Num_Facture,SAI_Solde_Facture))
sSujetest une chaîne="sujet du message" sPieceest une chaîne="chemin de la piece jointe"
Variantest unVariant SELONfFichierExiste(CompteGmail.Token.Dossier+"APIGmail.json") CASFaux:
MonTokenest un AuthToken=AuthIdentifie(CompteGmail.OAuth) SELONMonToken.Valide CASFaux:Erreur("Impossible de récupérer les Tokens.") CASVrai: Variant=JSONVersVariant(MonToken..RéponseServeur) CompteGmail.Token.sAcces=Variant.access_token CompteGmail.Token.sRefresh=Variant.refresh_token CompteGmail.Token.dhLimiteValidite=DateHeureSys() CompteGmail.Token.dhLimiteValidite..Minute+=55 Variant.DateHeureLimite=CompteGmail.Token.dhLimiteValidite fSauveTexte(CompteGmail.Token.Dossier+"APIGmail.json",VariantVersJSON(Variant)) FIN CASVrai: Variant=JSONVersVariant(fChargeTexte(CompteGmail.Token.Dossier+"APIGmail.json")) CompteGmail.Token.sAcces=Variant.access_token CompteGmail.Token.sRefresh=Variant.refresh_token CompteGmail.Token.dhLimiteValidite=Variant.DateHeureLimite SIDateHeureSys() >CompteGmail.Token.dhLimiteValidite REQ_AccesTokenest une httpRequête REQ_AccesToken.URL=CompteGmail.OAuth..URLToken+ ["?"] REQ_AccesToken.Contenu=URLEncode(ChaîneVersUTF8(ChaîneConstruit("client_id=%1&client_secret=%2&refresh_token=%3&grant_type=refresh_token",CompteGmail.OAuth.ClientID,CompteGmail.OAuth.ClientSecret,CompteGmail.Token.sRefresh))) REP_AccesTokenest une httpRéponse=HTTPEnvoie(REQ_AccesToken) SIErreurDétectée=VraiALORS Erreur(ErreurInfo(errMessage)) SINON Variant=JSONVersVariant(REP_AccesToken.Contenu) Variant.refresh_token=CompteGmail.Token.sRefresh CompteGmail.Token.sAcces=Variant.access_token CompteGmail.Token.dhLimiteValidite=DateHeureSys() CompteGmail.Token.dhLimiteValidite..Minute+=55 fSauveTexte(CompteGmail.Token.Dossier+"APIGmail.json",VariantVersJSON(Variant)) FIN FIN FIN
Mail_Adresse_envoieest une chaîne=CompteGmail.AdresseMail sMail_Destinataireest une chaîne=SAI_Adresse_Mail Mail_Sujetest une chaîne=sSujet Mail_Texte_bruteest une chaîne=sMessage Mail_Htmlest une chaîne=fChargeTexte(SysRep(srBureau) + [fSep] +sMessage) Mail_a_une_PJest un booléen=Vrai
Mailest un Email Mail..Destinataire[1]="destinataire" Mail..Sujet="sujet" Mail..Message="message" Mail..HTML="message html (peut être le même)"
SIMail_a_une_PJALORS Piece_jointeest un emailAttache Piece_jointe..Nom="chemin pièce" Piece_jointe..Contenu=fChargeTexte("chemin piece") Piece_jointe..ContentType="application/pdf" Piece_jointe..ContentDescription="Un doc pdf" Ajoute(Mail..Attache,Piece_jointe) FIN
SIEmailConstruitSource(Mail)ALORS Rawest un Email Raw..Message=Mail..Source
Requete_gmailest une httpRequête Requete_gmail.ContentType="message/rfc822" Requete_gmail.URL=ChaîneConstruit("https://www.googleapis.com/upload/gmail/v1/users/%1/messages/send?uploadType=media",Mail_Adresse_envoie) Requete_gmail.Méthode=httpPost Requete_gmail.Contenu=Raw..Message Requete_gmail..Entête["Authorization"]=ChaîneConstruit("Bearer %1",CompteGmail.Token.sAcces)
Réponse_Requeteest un httpRéponse=HTTPEnvoie(Requete_gmail)
SIErreurDétectée=VraiALORS Erreur("ErreurInfo(errMessage) : "+RC+ErreurInfo(errMessage)) SINON Info("Relance envoyée avec succès.") FIN FIN
>En espérant vous avoir aidé |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 16 messages Popularité : +3 (3 votes) |
|
Posté le 06 février 2021 - 14:00 |
Bonjour à tous,
@Voroltinquo Merci pour le lien concernant l'installation d'un serveur de mail propre. Je suppose que pour pouvoir l'utiliser, l'établissement doit acheter un nom de domaine? Mais c'est en effet une solution alternative à étudier.
@Paul SOULAT Un grand merci à vous pour ce partage inespéré de code. Je ne crois pas que je serais arrivé à le "pondre"! Un excellente motivation pour me replonger dans le site de Google. Je ne peux que réitérer mes remerciements.
Bon week-end à tous. >Robert |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 898 messages Popularité : +227 (347 votes) |
|
Posté le 06 février 2021 - 14:41 |
Robert a écrit :
Merci pour le lien concernant l'installation d'un serveur de mail propre. Je suppose que pour pouvoir l'utiliser, l'établissement doit acheter un nom de domaine?
Si c'est pour une utilisation à l'intérieur de l'établissement non. Si le serveur est destiné à communiquer vers l'extérieur oui.
-- >Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 16 messages Popularité : +3 (3 votes) |
|
Posté le 07 février 2021 - 15:07 |
Bonjour à tous, @Voroltinquo Merci, en effet il y a communication avec l'extérieur.
@Paul SOULAT Je suis retourné sur le site de google et réussit à obtenir un identifiant et un mot de passe pour mon prog. Dans un premier temps, ma connexion a été refusée. Je suis retourné sur le site et curieusement je me suis mis dans les 100 personnes autorisées à tester (malgré que je suis reconnu comme propriétaire!). Une page web me demande ensuite de m'autoriser à me connecter. Ce que je me suis accordé
Ton code m'a alors permis l'envoi d'un mail avec un pdf attaché sans problème. Encore un grand merci.
Peut -être pourrais-tu (ou quelqu'un d'autre) répondre à une ou deux questions... Faut-il demander la validation du programme sur le site? Dois-je mettre l'adresse gmail de l'établissement dans la liste des 100 personnes autorisées "à tester" ,sur le site de google pour avoir la connexion (oui je pense si le programme est en test!, comme actuellement). La période de test est-elle limitée dans le temps? Cette solution peut-elle être définitive étant donné qu'il me semble avoir lu que pour l'envoi de mail, pour un appli perso... la demande de validation du programme par google n'est pas nécessaire.
Quelle est la bonne suite à donner, pour que la personne qui utilisera l'appli ne soit pas embêtée par des problèmes de connexion. Si quelqu'un peut me faire profiter de son expérience et m'éclairer sur ces points, je suis preneur.
Bon dimanche et bonne semaine à tous. >Robert |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 40 messages |
|
Posté le 07 février 2021 - 22:23 |
Bonsoir, La demande de connexion ce fait une seule fois
>il faut effectivement indiquer les personnes qui peuvent utiliser la connexion (100) à moins que google vérifie l'appli là tout le monde pourras ce connecter |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 14 messages Popularité : -1 (1 vote) |
|
Posté le 29 avril 2022 - 20:27 |
Un grand merci à vous Paul SOULAT. Votre méthode de requête marche très bien.
-- Windev 22 Windev mobile 22 >Windows 7 64 bitsMessage modifié, 29 avril 2022 - 20:29 |
| |
| |
| | | |
|
| | |
| |
Posté le 07 mars 2023 - 06:29 |
Bonjour,
//Construction de la requete Requete_gmail est une httpRequête Requete_gmail.ContentType = "message/rfc822" Requete_gmail.URL = ChaîneConstruit("https://www.googleapis.com/upload/gmail/v1/users/%1/messages/send…) Requete_gmail.Méthode = httpPost Requete_gmail.Contenu = Mail..Message Requete_gmail..Entête["Authorization"] = ChaîneConstruit("Bearer %1",CompteGmail.Token.sAcces)
//Envoi de la requete Réponse_Requete est un httpRéponse = HTTPEnvoie(Requete_gmail)
info(Réponse_Requete..Code_Etat)
Sur mon info, j'ai une erreur 503 : d'où peut venir le problème?
>Cordialement |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|