Developpez.com

Télécharger gratuitement le magazine des développeurs, le bimestriel des développeurs avec une sélection des meilleurs tutoriels

FAQ MS-AccessConsultez toutes les FAQ

Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 30 mars 2017 

 
OuvrirSommaireVBAInteraction avec d'autres applicationsApplications OfficeOutlook


Pour exécuter ce code, il faut activer la référence : Microsoft Outlook X.0 Object Library.

 
Sélectionnez
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 = 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

Et pour éviter la demande d'Outlook qui indique qu'une application est en train d'envoyer un message, il y a une solution ici :

http://www.express-soft.com/mailmate/clickyes.html

Mis à jour le 14 octobre 2007  par Etienne Bar

Lien : Le publipostage avec AccessII. Publipostage vers le mail
Lien : Comment envoyer un mail format HTML avec Outlook ?

Ce code n'est à utiliser seulement si Outlook est le client de messagerie par défaut, sinon MAPI vous renvoie une erreur.

Cochez la référence à Outlook dans les références du projet. Posez une TextBox nommé "résultat" sur un formulaire et placez ce code dans le module du formulaire :

 
Sélectionnez

Private Declare Function MAPIDetails Lib "MAPI32.DLL" Alias "BMAPIDetails" _
                                     (ByVal Session&, ByVal UIParam&, Recipient As MapiRecip, _
                                      ByVal Flags&, ByVal Reserved&) As Long
Private Declare Function MAPIResolveName Lib "MAPI32.DLL" Alias "BMAPIResolveName" _
                                         (ByVal Session&, ByVal UIParam&, ByVal UserName$, _
                                          ByVal Flags&, ByVal Reserved&, Recipient As MapiRecip) As Long

Private Type MapiRecip
    Reserved As Long
    RecipClass As Long
    Name As String
    Address As String
    EIDSize As Long
    EntryID As String
End Type

Sub listemail()
    Dim X As Long, I As Long
    Dim out As Outlook.Application
    Dim a As Object, mapi As Object
    Dim ctrlists As Integer
    Dim info As MapiRecip
   
    Set out = New Outlook.Application
    Set mapi = out.GetNameSpace("MAPI")
    For ctrlists = 1 To mapi.AddressLists.Count
        Set a = mapi.AddressLists(ctrlists)
        For X = 1 To a.AddressEntries.Count
            I = MAPIResolveName(0, 0, a.AddressEntries(X), 0, 0, info)
            resultat.Text = resultat.Text & "Nom :    " & info.Name & "   " & " @ : " & _
                            Replace(info.Address, "SMTP:", "") & vbCrLf
    'I = MAPIDetails(0, 0, info, 0, 0) 'pour éditer les détails.
            DoEvents
        Next
        DoEvents
    Next
    Set a = Nothing
    Set out = Nothing
    Set mapi = Nothing
End Sub

La procédure listemail affiche les informations dans la TextBox.

Créé le 1er janvier 2005  par ThierryAIM, grafikm_fr

Lien : FAQ VB

Il suffit d'utiliser le code suivant après avoir ajouté une référence Microsoft Outlook à votre projet.

 
Sélectionnez

   Dim myOlApp As New Outlook.Application
   Dim myNameSpace As NameSpace
   Dim myFolder, myContactFolder As MAPIFolder
   Dim myNewContact As Outlook.ContactItem

   Set myOlApp = CreateObject("Outlook.Application")
   Set myNameSpace = myOlApp.GetNamespace("MAPI")
   Set myFolder = myNameSpace.Folders("Dossiers Communs")   
   Set myContactFolder = myFolder.Folders("Contacts commmuns")   
       
   Set myNewContact = myContactFolder.Items.Add(olContactItem)
   With myNewContact
        .FirstName = "Astérix"
        .LastName = "Le Gaulois"
        .Email1Address="asterix@dolmen.fr"
        .Save
   End With
Msgbox "Contact Ajouté"

myOlApp.Close
Set myOlApp=Nothing 
Créé le 10 mai 2005  par Isa38
 
Sélectionnez
Function SendMailCDO(MTo As String, MSubject As String, Optional MBody As String, Optional MAttach As String)
  Dim myOlApp As Object
  Dim myitem As Object
 
  Set myOlApp = CreateObject("Outlook.Application")
  Set myitem = myOlApp.CreateItem(0)
   
  myitem.Body = MBody
  myitem.Attachments.Add MAttach
  myitem.Subject = MSubject
  myitem.To = MTo
  myitem.Save 'ou .send pour envoyer
 
  Set myOlApp = Nothing
End Function
Créé le 1er janvier 2005  par Team Access

Lien : Le publipostage avec AccessII. Publipostage vers le mail


Pour pouvoir ajouter des enrichissements de mise en forme on peut utiliser du HTML dans le corps du message grâce à .HTMLBody comme dans la fonction suivante :

 
Sélectionnez
Private Sub cmdSend_Click()
 
Dim strHTML As String
Dim oEmail As Outlook.MailItem
Dim appOutlook As Outlook.Application
 
Set appOutlook = New Outlook.Application
Set oEmail = appOutlook.CreateItem(olMailItem)
 
oEmail.To = Me.txtTo
oEmail.Subject = Me.txtSubject
 
strHTML = "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"">" & _
          "<HTML><HEAD>" & _
          "<META http-equiv=Content-Type content=""text/html; charset=iso-8859-1"">" & _
          "<META content=""MSHTML 6.00.2800.1516"" name=GENERATOR></HEAD>" & _
          "<BODY><DIV STYLE=""font-size: 11px; font-face: Tahoma;"">"
 
oEmail.HTMLBody = strHTML & Replace(Me.txtBody, vbCrLf, "<br>") & "</DIV></BODY></HTML>"
 
 
oEmail.Send
 
Set oEmail = Nothing
Set appOutlook = Nothing
 
End Sub
Créé le 14 octobre 2007  par cafeine

Lien : Le publipostage avec AccessII. Publipostage vers le mail

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2013 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.