FAQ MS-Access

FAQ MS-AccessConsultez toutes les FAQ
Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 15 juin 2021
Sommaire→VBA→Interaction avec d'autres applications→Applications Office→Outlook- Comment envoyer un mail avec Outlook ?
- Comment récupérer le carnet d'adresses d'Outlook ?
- Comment ajouter un rendez-vous dans Microsoft Outlook à l'aide d'Automation ?
- Comment ajouter des contacts dans la liste des contacts commune sous Outlook avec un serveur Exchange ?
- Comment sauvegarder un mail ?
- Comment envoyer un mail format HTML avec Outlook ?
Pour exécuter ce code, il faut activer la référence : Microsoft Outlook X.0 Object Library.
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 SubEt pour éviter la demande d'Outlook qui indique qu'une application est en train d'envoyer un message, il y a une solution ici :
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 :
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 SubLa procédure listemail affiche les informations dans la TextBox.
Lien : FAQ VB
Il suffit d'utiliser le code suivant après avoir ajouté une référence Microsoft Outlook à votre projet.
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=NothingFunction 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 FunctionLien : 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 :
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 SubLien : Le publipostage avec AccessII. Publipostage vers le mail



