FAQ MS-Access
FAQ MS-AccessConsultez toutes les FAQ
Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 15 juin 2021
- 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
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 :
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
Sub
La 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=
Nothing
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
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 :
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
Lien : Le publipostage avec AccessII. Publipostage vers le mail