Page 1 sur 2

envoi de mail

Publié : sam. 23/mars/2019 16:46
par SPH
Salut,

voyez vous autre chose que ceci pour envoyer un email a coup sur ? :

Code : Tout sélectionner

InitNetwork()

If CreateMail(0, "", "test d'envoi de mail")
  SetMailBody(0, "Envoyé par "+ComputerName())
  AddMailRecipient(0, "isabelle.nopi@laposte.net", #PB_Mail_To)
  ;          For i=0 To cmb
  ;            AddMailAttachment(0, "save", "save", "")
  ;          Next
  Resultat = SendMail(0, "smtp.orange.fr", 25, 0)
  If resultat=0
    Resultat = SendMail(0, "smtp.free.fr", 25, 0)
    If resultat=0
      Resultat = SendMail(0, "smtp.cegetel.fr", 25, 0)
      If resultat=0
        Resultat = SendMail(0, "smtp.alice.fr", 25, 0)
        If resultat=0
          Resultat = SendMail(0, "smtp.sfr.fr", 25, 0)
          If resultat=0
            Resultat = SendMail(0, "smtp.neuf.fr", 25, 0)
            If resultat=0
              Resultat = SendMail(0, "smtp.noos.fr", 25, 0)
              If resultat=0
                Resultat = SendMail(0, "smtp.tele2.fr", 25, 0)
                If resultat=0
                  Resultat = SendMail(0, "smtp.tiscali.fr", 25, 0)
                  If resultat=0
                    Resultat = SendMail(0, "smtp.wanadoo.fr", 25, 0)
                    If resultat=0
                      Resultat = SendMail(0, "smtp.numericable.fr", 25, 0)
                      If resultat=0
                        Resultat = SendMail(0, "smtp.ovh.fr", 25, 0)
                        If resultat=0
                          MessageRequester("erreur","Email non envoyé")
                        EndIf
                      EndIf
                    EndIf
                  EndIf
                EndIf
              EndIf
            EndIf
          EndIf
        EndIf
      EndIf
    EndIf
  EndIf
EndIf
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Re: envoi de mail

Publié : sam. 23/mars/2019 17:51
par TazNormand
Salut SPH,

il manque juste un truc c'est que tu ne fais que des envois via le port 25, donc sans SSL, ne pas oublier les ports 465 et 587 :wink:

à l'arrache :

Code : Tout sélectionner

InitNetwork()
MsgTitle.s="email envoyé"
msgText.s="Votre message a bien été envoyé"
srvSMTP.s=""

If CreateMail(0, "", "test d'envoi de mail")
  SetMailBody(0, "Envoyé par "+ComputerName())
  AddMailRecipient(0, "isabelle.nopi@laposte.net", #PB_Mail_To)
  ;          For i=0 To cmb
  ;            AddMailAttachment(0, "save", "save", "")
  ;          Next
  Resultat=0
  Restore smtpServers
  While Resultat=0
    Read.s srvSMTP
    Resultat = SendMail(0, "smtp."+SrvSMTP, 25, 0)
  Wend
  If resultat=0
    msgTitle="Erreur envoi email"
    msgText="Il y a eu un problème sur l'envoi de votre message !!!"
  EndIf
  MessageRequester(MsgTitle,MsgText)
    
EndIf

End

DataSection
  smtpServers:
  Data.s "orange.fr", "free.fr","cegetel.fr","alice.fr"
  Data.s "sfr.fr","neuf.fr","noos.fr","tele2.fr","tiscali.fr"
  Data.s "wanadoo.fr","numericable.fr","ovh.fr"
EndDataSection

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Re: envoi de mail

Publié : sam. 23/mars/2019 17:53
par TazNormand
Ce qui serait pas mal dans PB, c'est un opérateur ternaire du genre :

Code : Tout sélectionner

 MsgText=iif(Resultat,"MsgOK","MsgErr")

Re: envoi de mail

Publié : sam. 23/mars/2019 17:56
par SPH
ne pas oublier les ports 465 et 587
Ou utilises tu ces ports dans ton code :?:

Re: envoi de mail

Publié : sam. 23/mars/2019 18:24
par TazNormand
Nul part, je te dis juste qu'il ne faut pas les oublier, tu peux faire comme ça :

Code : Tout sélectionner

InitNetwork()
MsgTitle.s="email envoyé"
msgText.s="Votre message a bien été envoyé"
srvSMTP.s=""
Dim ports(2)
ports(0)=25
ports(1)=465
ports(2)=587

  

If CreateMail(0, "", "test d'envoi de mail")
  SetMailBody(0, "Envoyé par "+ComputerName())
  AddMailRecipient(0, "isabelle.nopi@laposte.net", #PB_Mail_To)
  ;          For i=0 To cmb
  ;            AddMailAttachment(0, "save", "save", "")
  ;          Next
  Resultat=0
  Restore smtpServers
  While Resultat=0
    Read.s srvSMTP
    ssl=0
    i=0
    While i<2 And Resultat=0
      If i>0
        ssl=#PB_Mail_UseSSL
      EndIf      
      Resultat = SendMail(0, "smtp."+SrvSMTP, ports(i), ssl)
      i=i+1      
    Wend
  Wend
  If resultat=0
    msgTitle="Erreur envoi email"
    msgText="Il y a eu un problème sur l'envoi de votre message !!!"
  EndIf
  MessageRequester(MsgTitle,MsgText)
    
EndIf

End

DataSection
  smtpServers:
  Data.s "orange.fr", "free.fr","cegetel.fr","alice.fr"
  Data.s "sfr.fr","neuf.fr","noos.fr","tele2.fr","tiscali.fr"
  Data.s "wanadoo.fr","numericable.fr","ovh.fr"
EndDataSection

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Re: envoi de mail

Publié : dim. 24/mars/2019 9:02
par Micoute
Merci TazNormand pour le partage, ce programme fonctionne parfaitement.

Re: envoi de mail

Publié : dim. 24/mars/2019 13:01
par SPH
Je ne me rappelle plus du tout comment s'appelle la technique qui permet de lancer une routine en parallele (pour ne pas attendre que le code s'execute)
Car ce code peux mettre plusieurs secondes a s'executer :|

Re: envoi de mail

Publié : dim. 24/mars/2019 14:35
par Micoute
Un thread ?

Re: envoi de mail

Publié : dim. 24/mars/2019 15:23
par TazNormand
@SPH : tu peux utiliser la constante #PB_Mail_Asynchronous dans le sendMail ccomme ça :

Code : Tout sélectionner

Resultat = SendMail(0, "smtp."+SrvSMTP, ports(i), ssl|#PB_Mail_Asynchronous)

Re: envoi de mail

Publié : dim. 24/mars/2019 16:32
par SPH
Haaaa, un thread, oui

Merci a vous , je teste ca pour choisir le meilleur moyen... 8)

Re: envoi de mail

Publié : dim. 24/mars/2019 16:53
par Marc56
Pourquoi essayer tous les SMTP puisque normalement seul le FAI par lequel tu es connecté autorisera le SMTP non authentifié ?

Re: envoi de mail

Publié : dim. 24/mars/2019 18:34
par SPH
Marc56 a écrit :Pourquoi essayer tous les SMTP puisque normalement seul le FAI par lequel tu es connecté autorisera le SMTP non authentifié ?
Par exemple, si je fais un logiciel de messagerie, je ne connais pas a l'avance le FAI de l'utilisateur (le miens si, mais pas le siens)

Re: envoi de mail

Publié : lun. 25/mars/2019 7:57
par Micoute
puisque tu connais l'adresse du destinataire :

Code : Tout sélectionner

Smtp = "smtp." + StringField(Destinataire, 2, "@")

Re: envoi de mail

Publié : lun. 25/mars/2019 11:54
par cage
Bonjour,

Une petite application PB disponible ici
Image
CAGE

Re: envoi de mail

Publié : lun. 25/mars/2019 12:04
par case
tu veux dire ici ? :lol: :lol: