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 :

VB 6 mail avec Outlook


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 76
    Par défaut VB 6 mail avec Outlook
    Bonjour à tous!

    J'ai developpé une appli pour envoyer des mails à des destinataires dont les adresses sont stocquées dans une base Access.
    Ci-dessous la routine d'envoi de mail avec Outlook:
    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
    Public Sub CreateEmail(Recipient As String, Subject As String, Body As String, Optional Attach As Variant)
     
        Dim I As Integer
        Dim oEmail As Outlook.MailItem
        Dim appOutLook As Outlook.Application
     
        ' créer un nouvel item mail
     
        Set appOutLook = New Outlook.Application
        Set oEmail = appOutLook.CreateItem(olMailItem)
     
        ' les paramètres
     
        oEmail.To = GetTok(Recipient, 1, ";")   'le champ adresse pouvant contenir ++ adresse séparées par des ";"
        If GetTok(Recipient, 2, ";") <> "" Then
          oEmail.CC = GetTok(Recipient, 2, ";")
          If GetTok(Recipient, 3, ";") <> "" Then
             oEmail.BCC = GetTok(Recipient, 3, ";")
          End If
       End If
     
        'oEmail.To = Recipient
        oEmail.Subject = Subject
        oEmail.Body = Body
     
        If Not IsMissing(Attach) Then
     
           If TypeName(Attach) = "String" Then
     
                 ' s'il y a des pièces jointes
                oEmail.Attachments.Add Attach
     
     
           Else
     
                For I = 0 To UBound(Attach) - 1
                oEmail.Attachments.Add Attach(I)
     
                Next
     
            End If
     
        End If
     
        ' envoie le message
        oEmail.Send
     
        ' détruit les références aux objets
        Set oEmail = Nothing
     
        Set appOutLook = Nothing
     
    End Sub
    j'ai installé Express Click Yes pour le click automatique sur l'alerte que Outlook m'envoie. C'est cool mais je voudrais que cette boite de dialogue soit transparent à l'exploitation de l'appli, pas visible quoi. Quelqu'un at-il une idéé?

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Il est possible d'utiliser mon composant ocx dont le source est ici
    Comme il travaille au niveau smtp, pas de problemes d'alertes .
    Seul inconvenient connu à ce jour, il ne gere pas l'authentification ni la liaison sécurisée.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 76
    Par défaut Suite
    En plus de ton composant SMTP dont il faut ajouter le composant et l'OCX qu'il faut copier dans le répertoire du projet. Est-*ce que j'aurai besoin de tes classes?

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    La place pour les composants ocx serait plutot dans le repertoire system32.
    (une dll est egalement a placer à cet endroit MimeCode.dll)
    L'avantage du composant ocx, c'est qu'il s'auto-suffit, pas besoin d'ajouter du code dans le projet a part celui permettant de piloter le composant.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 76
    Par défaut Suite.
    Slt,

    Voici le nouveau code que j'utilise pour l'envoi des mails basés sur ton OCX:

    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
    Public Sub SendMail(Compte As String)
     
    'envoi du mail
      Dim strTemp As String
      Dim Liste As Variant
      Dim iPnt As Integer
     
     
      'raz des elements du mail dans le composant
      SmtpCli1.InitMail
     
      'Initialisation de JnlDirectory
      SmtpCli1.JnlDirectory = App.Path & "\EML"
     
      'niveau de priorité
      SmtpCli1.Priority = Normal
     
      'sujet du mail
      SmtpCli1.Subject = "Fichier de " & Format(Date, "MM/YYYY")
     
      'message (peut être au format HTML)
      SmtpCli1.Message = lire_corps("Echelles")
     
      'chargement de la liste des destinataires
      Dim rec As Recordset
      Set rec = New ADODB.Recordset
      rec.Open "select mailcli from abonne where comptecli='" & Compte & "'", Cnech, adOpenForwardOnly, adLockReadOnly
      If rec.EOF = True Then
        strLog = Now & " : Envoi des avis du compte " & Compte & ": Echec : Adresse d'envoi inexistante"
        Call fPrintInLogFile(strLog)
        Exit Sub
      Else
     
      'ajout d'un destinataire
      'la methode add utilise deux parametres
      ' SmtpCli1.Receipts.Add NomDestinataireEnClair, AdresseEmail
      SmtpCli1.Receipts.Add " ", GetTok(rec!mailcli, 1, ";")
     
      'chargement de la liste des destinataires de copie conforme
        If GetTok(rec!mailcli, 2, ";") <> "" Then
         SmtpCli1.CCReceipts.Add " ", GetTok(rec!mailcli, 2, ";")
     
        'chargement de la liste des destinataires de copie conforme aveugle
          If GetTok(rec!mailcli, 3, ";") <> "" Then
              SmtpCli1.BCCReceipts.Add " ", GetTok(rec!mailcli, 3, ";")
          End If
        End If
     
      'ajout des pieces jointes
        Dim aResultat() As String
        Dim lRet As Long
        Dim i As Long
     
        lRet = GetFilesPathFromDirectory(strSendDir, aResultat())
        If lRet <> -1 Then
            For i = 0 To lRet
                'Debug.Print "Fichier " & i + 1 & " = " & aResultat(i)
                SmtpCli1.Attachments.Add aResultat(i)
            Next i
        End If
     
      'Envoi du Mail
      If SmtpCli1.SendMail Then
        strLog = Now & " : Envoi avis du compte " & Space(8) & Compte & " Destinataires : " & rec!mailcli & "  succès "
        Call fPrintInLogFile(strLog)
      Else
        strLog = Now & " : Echec lors de l'envoi des avis du compte " & Space(8) & comptecli & " à : " & adr!mailcli & "  succès "
        Call fPrintInLogFile(strLog)
      End If
     End If
    End Sub
    Malheureusement l'exécution se plante lors de l'appel de la méthode SmtpCli1.Sendmail, il affiche l'erreur n°'76': Chemin d'accès introuvable.
    Quels sont les répertoires utilisés par cette methode?

  6. #6
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 32
    Par défaut
    Sinon il existe aussi un formulaire a creer dans Outlook dans un repertoire de la boite en question qui permet d outrepasser cette pop up de facon completement transparente.

Discussions similaires

  1. le .save d'un mail avec Outlook
    Par Hydex dans le forum VBA Access
    Réponses: 3
    Dernier message: 07/06/2007, 15h38
  2. Envoi de mail avec Outlook
    Par lolo_bob2 dans le forum Access
    Réponses: 5
    Dernier message: 31/05/2006, 13h30
  3. envois d'un mail avec outlook express en vb
    Par trefles dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 07/01/2006, 18h27
  4. Envoi E-mail avec Outlook Express
    Par chim33 dans le forum Access
    Réponses: 6
    Dernier message: 24/12/2005, 17h14
  5. Envoi mail avec Outlook accusé de réception
    Par KapoueMan dans le forum Access
    Réponses: 2
    Dernier message: 14/04/2005, 10h41

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