Page 1 sur 1

Faire fonctionner PBmail

Publié : dim. 15/sept./2024 12:54
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:

Re: Faire fonctionner PBmail

Publié : dim. 15/sept./2024 13:09
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:

Re: Faire fonctionner PBmail

Publié : dim. 15/sept./2024 14:22
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 ?

Re: Faire fonctionner PBmail

Publié : dim. 15/sept./2024 17:12
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:

Re: Faire fonctionner PBmail

Publié : dim. 15/sept./2024 18:04
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.

Re: Faire fonctionner PBmail

Publié : lun. 16/sept./2024 14:10
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:

Re: Faire fonctionner PBmail

Publié : lun. 16/sept./2024 15:34
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.

Re: Faire fonctionner PBmail

Publié : lun. 16/sept./2024 16:10
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:

Re: Faire fonctionner PBmail

Publié : lun. 16/sept./2024 18:11
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.