Faire fonctionner PBmail

Informations pour bien débuter en PureBasic
As_sembleur
Messages : 12
Inscription : lun. 08/janv./2024 16:09

Faire fonctionner PBmail

Message par As_sembleur »

Bonjour à tous,

J'essaye depuis plusieurs mois, par petites touches de m'envoyer un mail de mon pc vers ma boîte mail pour tester cette fonction que je veux intégrer dans une application..
Et ... et ... je n'y arrive pas ! J'ai beau prendre l'exemple de PB, modifier les endroits à priori à modifier et ... rien.

Code : Tout sélectionner

; -----------------------------------------------------------
;   PureBasic - Mail example file
; -----------------------------------------------------------

If CreateMail(0, "xxxxxxxxxxxxxxxxxx@wanadoo.fr", "Hello !")

  SetMailBody(0, "Hello !" + #CRLF$ +
                 "This is a multi-" + #CRLF$ +
                 "line mail !")
  
  ; Set the SMTP server to use (ma boîte est bien sur le port 465, vérifié dans les paramètres de thunderbird)
  Result = SendMail(0, "smtp.orange.fr", 465, #PB_Mail_Asynchronous|#PB_Mail_UseSSL)
  
  Repeat
    Progress = MailProgress(0)
    Delay(300)
  Until Progress = #PB_Mail_Finished Or Progress = #PB_Mail_Error
  
  If Progress = #PB_Mail_Finished
    MessageRequester("Information", "Mail correctly sent !")
  Else
    MessageRequester("Error", "Can't sent the mail !")
  EndIf
  
EndIf
Y-aurait-il une bonne âme pour me guider ?

Merci par avance.

(Edit modo: mail supprimé du code source) :wink:
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: Faire fonctionner PBmail

Message par Marc56 »

Bonjour,

Tous les serveurs SMTP sont maintenant avec authentification, donc il faut passer celle-ci dans la commande.
SendMail(#Courrier, Smtp$ [, Port [, Options [, Identifiant$, MotdePasse$]]])

PS. Ne mets pas d'identifiant dans ton code source (utilise un fichier externe ou InputRequester())
:wink:
As_sembleur
Messages : 12
Inscription : lun. 08/janv./2024 16:09

Re: Faire fonctionner PBmail

Message par As_sembleur »

Merci Marc56 d'une réponse aussi rapide.

J'ai, bien sur, déjà essayé avec l'identifiant et le mot de passe.
comme cela ne fonctionne pas non plus, je me fourvoye peut-être dans ces infos.

L'identifiant ? Késako ? mon adresse mail ?
Le mot de passe : je suppose que c'est celui que je mets à l'ouverture de thunderbird !
If CreateMail(0, "jean-pierre-souverville@wanadoo.fr", "Hello !")

SetMailBody(0, "Hello !" + #CRLF$ +
"This is a multi-" + #CRLF$ +
"line mail !")

; Set the SMTP server to use (ma boîte est bien sur le port 465)
Result = SendMail(0, "smtp.orange.fr", 587,
#PB_Mail_Asynchronous,
"jean-pierre-souverville@wanadoo.fr", "xxx...xxx")
;j'ai modifié le mot de passe pour envoyer ce post.
Repeat
Progress = MailProgress(0)
Delay(300)
Until Progress = #PB_Mail_Finished Or Progress = #PB_Mail_Error

If Progress = #PB_Mail_Finished
MessageRequester("Information", "Mail correctly sent !")
Else
MessageRequester("Error", "Can't sent the mail !")
EndIf

EndIf
Ah ! je viens d'avoir le message : "mail correctly sent".
J'ai mis :
- le port :587 (avec 25 ou 465, ça ne fonctionne pas).
- identifiant : "jean-pierre-souverville@wanadoo.fr"
- mot de passe : celui à l'ouverture de thunderbird.
Par contre, je n'ai rien dans la boîte mail ! ! (greeeuuu). Le mail est parti quelque part ...

Qu'en penses-tu ?
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: Faire fonctionner PBmail

Message par Marc56 »

Bonsoir,

Voici un test qui fonctionne chez moi (Wanadoo.fr / Orange.fr)
:!: Certains serveurs mails n’accepteront de recevoir les mails ayant cette forme (gmail.com, free.fr)

Code : Tout sélectionner

Mail_From$  = "xxxxxx@orange.fr"
Mail_To$    = "xxxxxx@orange.fr"
Mail_Pass$  = InputRequester("Password", "Mode de passe mail", "")

CreateMail(0, Mail_To$, "Salut")
AddMailRecipient(0, Mail_To$, #PB_Mail_To)
SetMailBody(0, "Ceci est un essai 2!" + #CRLF$ + "2ème ligne")
Debug SendMail(0, "smtp.orange.fr", 465, #PB_Mail_UseSMTPS, Mail_From$, Mail_Pass$) 
:wink:
As_sembleur
Messages : 12
Inscription : lun. 08/janv./2024 16:09

Re: Faire fonctionner PBmail

Message par As_sembleur »

Merci beaucoup Marc56, ça fonctionne.
Et dire que je me suis pris les cheveux (enfin, ce qu'il en reste) pendant si longtemps.

Bon, où est le truc ?

Ce serait la constante #PB_Mail_UseSMTPS qui ferait la différence ?
En tout cas, cela fonctionne. Merci vraiment beaucoup. Je vais pouvoir avancer dans mon appli.
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: Faire fonctionner PBmail

Message par Marc56 »

Hello,

Selon mes essais, ça n'a fonctionné que depuis et vers une adresse Wanadoo/Orange

Voilà une version avec affichage du debug (nécessite de fonctionner en mode console (hélas))
Ce serait bien d'avoir une option pour récupérer ce dialogue en Debug ou dans un log.

Code : Tout sélectionner

; Compiler en mode console pour voir le dialogue client/serveur
; (Compilateur > Option du compilateur > Format de l'exécutable > Console)

OpenConsole() 

Mail_From$  = "" ; Remplir...
Mail_To$    = "" ; Remplir...
Mail_Pass$  = InputRequester("Password", "Mode de passe mail", "", #PB_InputRequester_Password)

CreateMail(0, Mail_To$, "Salut")

AddMailRecipient(0, Mail_To$, 
                 #PB_Mail_To)

SetMailBody(0, "Ceci est un essai.")

Debug SendMail(0, "smtp.orange.fr", 465, 
               #PB_Mail_UseSSL | #PB_Mail_UseSMTPS | #PB_Mail_Debug, 
               Mail_From$, 
               Mail_Pass$) 

PrintN(#CRLF$ + "Pressez <Entrée>")
Input()
CloseConsole()
Il y a tellement de possibilités de configuration SMTP qu'on ne peut pas faire de programme générique. :|
:wink:
As_sembleur
Messages : 12
Inscription : lun. 08/janv./2024 16:09

Re: Faire fonctionner PBmail

Message par As_sembleur »

Merci Marc56 (Breton ?, un vrai ?)

J'ai testé cela. Effectivement la console donne tout un tas d'aller retour sur le net d'où J'ai compris un minimum de choses.
Par contre, j'ai testé le fonctionnement en ôtant la constante #PB_Mail_UseSMTP et là, cela ne fonctionne pas.
Il y a juste une tentative de connexion de 3 lignes puis une déconnexion après un timeout.
Donc cette constante est importante.

Bon, maintenant que cela va bien, je considère le Pb comme résolu et je t'en remarcie encore une fois grandement.

Par contre, ta remarque sur la protection du mot de passe de connexion m'a interpellé.

Si je veux laisser ce mot de passe dans l'exécutable, quelle forme de chiffrage me conseillerais-tu ?
Est-ce que cela serait efficace ? Faudrait-il découper ce mot de passe en morceau et le parsemer dans le code ?
Ou bien quoi d'autre encore ?
Ou bien tout cela ne protègerait rien du tout !

Merci de tes remarques.
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: Faire fonctionner PBmail

Message par Marc56 »

Le mettre (sous forme de hash) ainsi que les autres données dans un fichier préférence.
(ou un simple fichier texte externe)
:wink:
As_sembleur
Messages : 12
Inscription : lun. 08/janv./2024 16:09

Re: Faire fonctionner PBmail

Message par As_sembleur »

Ok ! Merci.

Cependant, il faut bien que le code machine retrouve le mot de passe pour envoyer le mail (ou autre chose d'ailleurs, la question est générale) !
Donc, à un moment donné, il est reconstitué par une fonction inverse du hash.
Les hackers ne sont pas assez intelligents ni outillés pour craquer ce hash ou bien prendre le mot de passe au moment ou il est reconstitué ?
De même, mettre ce hash dans un fichier "preference" ou autre, le code va à un moment ou l'autre l'ouvrir et le lire.

Est-ce trop compliqué pour hacker ce mot de passe protégé ainsi ?
Les hackers cherchent-ils des individus plus naîfs, plus faciles à rouler ?

C'est une réflexion global, une question que je me pose aussi depuis longtemps

Bonne soirée.
Répondre