IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

envoi automatique de mail en VB6 sous windows 2000


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut envoi automatique de mail en VB6 sous windows 2000
    Je voudrais que mon programme en VB6 envoie, à un moment précis, un mail automatiquement et sans passer par la validation de l'utilisateur. Je travaille sous windows 2000.
    Merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Points : 216
    Points
    216
    Par défaut
    Citation Envoyé par Delbeke Voir le message
    Je ne vois pas 36 moyens
    Il te faut une application pour piloter Outlook .
    Cete application doit demander à outlook la liste des mails reçus pour y chercher, pour chaque message emis, le message de confirmation (ou son absence).
    Il n'y a que le client de messagerie qui puisse faire le job.
    Je ne sais pas si j'ai bien compris ce qu'il veut, mais si c'est pour envoyer des mails automatique, alors je me demande pourquoi ne pas recommander Winsock (avec le serveur smtp de sa société) ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    Bonjour,
    Je veux dire par automatique le fait qu'il s'exécute quand l'utilisateur effectue une action bien précise et sans l'intervention de celui-ci.
    Merci d'avance pour toutes réponses

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Points : 216
    Points
    216
    Par défaut
    Citation Envoyé par cpf2006 Voir le message
    Bonjour,
    Je veux dire par automatique le fait qu'il s'exécute quand l'utilisateur effectue une action bien précise et sans l'intervention de celui-ci.
    Merci d'avance pour toutes réponses

    Oui, c'est pour ça que je pensais à propos de WINSOCK, mais si Delbeke a dit que le seul moyen est de piloter outlook c'est peut être pour une certaine raison, du coup, attend un peu pour qu'il clarifie pourquoi il n'a pas proposé autre chose comme WINSOCK, avant que tu te lances dans des recherches en vain. Moi je l'aurai fait avec WINSOCK, mais peut etre Delbeke a compris quelque chose dans ce que tu as dis, que moi j'ai pas compris, ainsi il a trouvé qu'avec WINSOCK ce n'est pas faisable et t'as proposé de chercher à piloter Outlook

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    J'ai utilisé sa en vba, envoi automatique sans confirmation, et tout ce que j'ai fait en vba j'ai réussi à le convertir en vb6 en utilisant des objets, je te met mon code si jamais sa peut t'aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Dim ol As Object
            Set ol = CreateObject("Outlook.Application")
     
            Dim olmail As Object
            Set olmail = ol.CreateItem(MailItem)
                With olmail
                .To = "MAIL1;MAIL2;MAILX"
                .Subject = "SUJET"
                .Body = "BLA BLA BLA" _
                "ET BLA BLA BLA" _
                "ET BLA BLA."
                .Attachments.Add "c:\PIECE JOINTE.txt" 
                .Send
                End With
     
            Set ol = Nothing
            Set olmail = Nothing

  6. #6
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    D'après ce que j'avais compris, il fallait envoyer un mail de relance si on avait pas recu un mail de confirmation

    Ce qui impilque que pour détecter si on a reçu la confiormation de chercher dans les messages reçus si on avait ou non la confirmation. Hors les envois de départ ont été fait par outlook, donc c'est dans outlook qu'on doit chercher si un mail a reçu sa confirmation ou pas et eventuellement d'envoyer une relance.

    Winsock c'est bien pour envoyer des mails en automatique, mais pour la partie recherche de l'info .....

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Points : 216
    Points
    216
    Par défaut
    Ah oui, moi j'ai proposé winsock car je n'avais pas compris qu'il faut parcourir son inbox, et j'étais sur que si tu n'as pas proposé WINSOCK, c'est pour une raison.

    Pour résumer, cpf2006, si t'as pas besoin de parcourir ton inbox et tout ton but est d'envoyer des mails automatique, je te recommande winsock, si tu dois parcourir ton inbox, je te conseille de voir ce code (en anglais) qui te permet de voir comment parcourir le inbox de outlook!
    Sinon aussi regarde ce qu'il t'a passé Paindep pour l'envoi des mails, ça peut être utile pour toi

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    Bonjour,
    Je vous remercie grandement pour toutes vos réponses.
    Je n'ai pas besoin de parcourir l'inbox mais juste d'envoyer des mails vers l'administrateur lorsque, à l'utilisation d'un programme en VB6 sous windows 2000, l'utilisateur commet une erreur. Donc un mail auto sans que l'utilisateur doive intervenir d'une manière ou d'une autre.
    J'ai déjà commencé à comprendre l'objet winsock et cela me semble encore un peu confus. Mais je vais quand même tester le script avec Outlook. Je vous tiens au courant. Merci

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    RE
    J'ai testé le code de 'paindep' avec l'objet "outlook-Application".
    Le résultat est une erreur interne au programme avec le num 80030003.
    l'erreur pointe sur la ligne " Set olmail = ol.CreateItem(MailItem)" du script et donne une valeur à olmail = empty (vide) comme s'il n'avait pas trouvé l'objet outlook
    Ma question : faut-il possèder outlook complet ou bien outlook-express suffit ?
    Je continue mon exploration de winsock
    Merci et à très bientôt

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Points : 216
    Points
    216
    Par défaut
    Citation Envoyé par cpf2006 Voir le message
    RE
    J'ai testé le code de 'paindep' avec l'objet "outlook-Application".
    A ma connaissance, tu dois ajouter une référence (Menu projet, reference) vers : Microsot Outlook XX Object library (XX = la version expl 11.0)


    Sinon pour winsock, ça ne doit pas te prendre tant que ça, y a un tas d'example sur le net comment envoyer un mail avec winsock !


    Si c'est pour parcourir ton inbox, je t'ai passé un lien dans ma réponse précédente


    Bon courage

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    C'est normal que sa ne marche pas je t'ai dis que ce code était utilisé en vba, or tu es en vb6 là, je ne pense pas qu'il y est obligatoirement besoin de référence comme la dit justgreat mais passer par des objets devrait suffire, il faut tenter quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim appOutlook As Object
    Set appOutlook = CreateObject("Outlook.application")
    Et surement la meme chose pour le olmail je pense mais je n'ai pas la syntaxe exacte désolé.

  12. #12
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Il est également possile d'utiliser le controle MAPI
    Ajouter un controle Microsoft Mapi Control au projet
    Déposer un controle MapiSession et un controle MapiMessages sur la feuille
    Ajouter ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    Private Function SendMapi(SendTo As String, _
                        CopyTo As String, _
                        BCopyTo As String, _
                        Subject As String, _
                        Body As String, _
                        PJ As String) As Boolean
      Dim ADR As Variant
      Dim iPnt As Integer
      Dim iPosit As Integer
      MAPISession1.LogonUI = True
      MAPISession1.SignOn
      With MAPIMessages1
          .SessionID = MAPISession1.SessionID
          'purge des destinataires
          While .RecipCount > 0
            .RecipIndex = 0
            .Delete mapRecipientDelete
          Wend
          'purge des messages
          While .MsgCount > 0
            'purge des fichiers attachés au message
            .AttachmentIndex = 0
            While .AttachmentCount > 0
              .Delete 2
            Wend
            .Delete 0
          Wend
          .MsgIndex = -1
          ADR = Split(SendTo, ";")
          For iPnt = 0 To UBound(ADR)
            If ADR(iPnt) <> "" Then
              .RecipIndex = .RecipCount
              .RecipDisplayName = ADR(iPnt)
              '.ResolveName
              .RecipType = mapToList
            End If
          Next
          ADR = Split(CopyTo, ";")
          For iPnt = 0 To UBound(ADR)
            If ADR(iPnt) <> "" Then
              .RecipIndex = .RecipCount
              .RecipDisplayName = ADR(iPnt)
              '.ResolveName
              .RecipType = mapCcList
            End If
          Next
          ADR = Split(BCopyTo, ";")
          For iPnt = 0 To UBound(ADR)
            If ADR(iPnt) <> "" Then
              .RecipIndex = .RecipCount
              .RecipDisplayName = ADR(iPnt)
              '.ResolveName
              .RecipType = mapBccList
            End If
          Next
          .MsgSubject = Subject
          .MsgNoteText = Body & vbCrLf & " "  'Texte de l'Email
          .MsgReceiptRequested = Accusé
          '================
          'Fichier attaché
          If PJ <> "" Then
            .AttachmentIndex = 0 '.AttachmentCount
            iPosit = InStrRev(PJ, "\")
            If iPosit = 0 Then
              .AttachmentName = PJ   'fichier à attacher
            Else
              .AttachmentName = Mid(PJ, iPosit + 1) 'fichier à attacher
            End If
            .AttachmentPathName = PJ       'chemin complet + nom du fichier
            .AttachmentPosition = Len(.MsgNoteText) - 1
            .AttachmentType = mapData               'le fichier joint est du type fichier de données
          End If
          SendMapi = True
          On Error GoTo ErrSend
          .Send False
          On Error GoTo 0
        End With
     
      MAPISession1.SignOff
      Exit Function
    ErrSend:
       MsgBox "Erreur n°" & Err & " " & Err.Description, VbInformation,"Erreur soumission de l'email à MAPI"
      SendMapi = False
      Resume Next
    End Function
    Cette technique à l'avantage de fonctioner avec tous les clients mail supportant le protocole MAPI. (Ce qui est le cas de tous les clients Mail de Microsoft)

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    OK! Merci à tous ! Je suis arrivé à mes fins avec l'objet de VB6 "winsock" et grâce aussi aux nombreux forum sur la questions.
    Encore merci

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Points : 216
    Points
    216
    Par défaut
    Citation Envoyé par cpf2006 Voir le message
    OK! Merci à tous ! Je suis arrivé à mes fins avec l'objet de VB6 "winsock" et grâce aussi aux nombreux forum sur la questions.
    Encore merci
    ça ce que je t'avais proposé dès le début

    Par contre, si ça ne te dérange pas de poster le code que tu as utilisé je trouve que ça serait utile pour des gens qui ne connaissent pas winsock et qui auront la même question que toi ultérieurement

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    Désolé pour le retard:je n'avais pas encore lu le dernier message.
    Mon problème était que je ne connaissait pas la procédure à utiliser pour se connecter avec telnet
    Voici le code que j'ai utilisé et que j'ai pris ailleurs :
    - après avoir ajouté un object winsock (appelé "Winsock1") dans le projet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    Set evt = Winsock1
    Winsock1.Close  
    Winsock1.LocalPort = 7000
    Winsock1.RemotePort = 25
     
    Winsock1.Connect "server.a.adapter.be", 25
    While Winsock1.State <> sckConnected
    DoEvents
    Wend
    nextSend = False
    Winsock1.SendData "HELO login_dans_serveur" & vbCrLf
    While nextSend = False
    DoEvents
    Wend
    nextSend = False
    Winsock1.SendData "MAIL FROM:" & "adresse_mail_expediteur" & vbCrLf
    While nextSend = False
    DoEvents
    Wend
    nextSend = False
    Winsock1.SendData "RCPT TO:" & "adresse_mail_destinataire" & vbCrLf
    While nextSend = False
    DoEvents
    Wend
    nextSend = False
    Winsock1.SendData "DATA" & vbCrLf
    While nextSend = False
    DoEvents
    Wend
     
    Winsock1.SendData "From:" & "adresse_mail_expediteur" & vbCrLf
    Winsock1.SendData "To:" & "adresse_mail_destinataire" & vbCrLf
    Winsock1.SendData "Subject:" & "message à adapter" & vbCrLf
    Winsock1.SendData lign & vbCrLf
    Winsock1.SendData "MIME-Version 1.0" & vbCrLf
    Winsock1.SendData "Content-Type:text/plain; charset=" & Chr(34) & "ISO-8859-1" & Chr(34) & vbCrLf
    Winsock1.SendData "Content-Transfert-Encoding: 8 bit" & vbCrLf & vbCrLf
     
    '----- corps message -----
     
    Winsock1.SendData "" & vbCrLf
    Winsock1.SendData "message éventuel" & vbCrLf
    Winsock1.SendData "----------------------------------------------------" & vbCrLf
    Winsock1.SendData "On met se qu'on veut dans le corps " & vbCrLf
    Winsock1.SendData "" & vbCrLf
    nextSend = False
    Winsock1.SendData vbCrLf & "." & vbCrLf
    While nextSend = False
    DoEvents
    Wend
     
    nextSend = False
    Winsock1.SendData "QUIT" & vbCrLf
    While nextSend = False
    DoEvents
    Wend
    Winsock1.Close
    End Sub
     
    Public Sub evt_Close()
    rtxtLog = "Deconnexion réalisée"
    MsgBox rtxtLog
    End Sub
     
    Public Sub evt_Connect()
    rtxtLog = "Connexion au serveur réalisée"
    If Module1.ifconnect = True Then MsgBox rtxtLog
    End Sub
     
    Public Sub evt_ConnectionRequest(ByVal requestID As Long)
    rtxtLog = "Demande de connexion au serveur"
    MsgBox rtxtLog
    End Sub
     
    Public Sub evt_DataArrival(ByVal bytesTotal As Long)
    Dim tmp As String
     
    If Winsock1.State = sckClosed Or Winsock1.State = sckClosing Then Exit Sub
    Winsock1.GetData tmp, vbString, bytesTotal
    rtxtLog = Chr(13) & tmp
    MsgBox "infos serveur : " & rtxtLog
    nextSend = True
    End Sub
     
    Public Sub evt_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
        If Module1.ifconnect = True Then
            MsgBox "ERREUR de connection " & vbCrLf & Number & " : " & Description
        End If
    End Sub
    Voila, mais il faudra peut-être encore adapter certaines choses
    Merci à tous pour l'aide précieuse que vous m'apporter régulièrement
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/08/2006, 14h28
  2. [Mail] Envoi automatique de mail & génération pdf
    Par moabomotal dans le forum Langage
    Réponses: 1
    Dernier message: 01/06/2006, 08h46
  3. [Servlet]Envoi automatique de mails d'alerte
    Par spk4ever dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 11/05/2006, 14h06
  4. Envoi automatique de mails d'alerte
    Par spk4ever dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 11/05/2006, 11h11
  5. [Mail] envoi automatique de mail
    Par calitom dans le forum Langage
    Réponses: 17
    Dernier message: 04/04/2006, 16h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo