Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

FONCTION ENVOI DE MAIL PAR VBA SANS CLIENT LOCAL, PAR SERVEUR SMTP


Information sur la source



Description

Cette fonction est simple, courte, facile à utiliser, elle ne nécessite pas de Outlook ou autre Lotus installé en local, somme toute ça semble idéal. Il faut juste une DLL, donc cocher la référence associée:
"Microsoft CDO for windows 2000 library"
(correspondant au fichier system32/cdosys.dll)

Cette fonction envoie le mail avec la ou les pièce(s) jointe(s) (je n'utilise pas de body - texte dans le mail mais ça peut s'ajouter dans la fonction)
Pratique pour l'envoi en masse de messages sur une base Access.

J'utilise les constantes suivantes pour la configuration:

' configuration SMTP pour envoi de mail
Public Const MAIL_SENDUSING = 2
Public Const MAIL_AUTHENTICATE = 1
Public Const MAIL_CPT_SENDUSR = "<nom du compte>"
Public Const MAIL_CPT_SENDPASS = "<passe du compte>"
Public Const MAIL_FROM = "<mail de l'expéditeur>"
Public Const MAIL_SMTP_SERVER = "<nom serveur>"
Public Const MAIL_SMTP_SERVERPORT = 25

 

Source

  • '''""""""""""""""""""""""""""""""""""""""""""""""""""'''
  • '
  • ' FONCTION : envoyer un mail par SMTP
  • ' pstrTo : 1 ou plusieurs destinataire(s)
  • ' pstrSubject : objet du mail
  • ' pvarAttachFile : 1 ou plusieurs fichiers joints - string ou array de string
  • '
  • '''""""""""""""""""""""""""""""""""""""""""""""""""""'''
  • Public Function SMTPSendMail(pstrTo As String, pstrSubject As String, Optional pvarAttachFile As Variant) As Boolean
  • On Error GoTo SMTPSendMail_Err
  • Dim i As Long
  • Dim objEmail As New CDO.Message
  • 'Set objEmail = CreateObject("CDO.Message")
  • objEmail.From = MAIL_FROM
  • objEmail.To = pstrTo
  • objEmail.Subject = pstrSubject
  • ' Aucun corps de message, uniquement la pièce jointe
  • ' laisser un TextBody avec chaine vide, sinon le mail peut planter (pièce jointe incomplète)
  • objEmail.TextBody = ""
  • ' Ajout de la pièce jointe, 1 ou plusieurs fichiers
  • If Not IsMissing(pvarAttachFile) Then
  • If IsArray(pvarAttachFile) Then
  • ' parcourrir le tableau
  • For i = LBound(pvarAttachFile) To UBound(pvarAttachFile)
  • objEmail.AddAttachment pvarAttachFile(i)
  • Next i
  • Else
  • objEmail.AddAttachment pvarAttachFile ' "C:\temp\Bon de commande.pdf"
  • End If
  • End If
  • With objEmail.Configuration.Fields
  • .Item(CdoConfiguration.cdoSendUsingMethod) = MAIL_SENDUSING
  • .Item(CdoConfiguration.cdoSMTPAuthenticate) = MAIL_AUTHENTICATE
  • .Item(CdoConfiguration.cdoSendUserName) = MAIL_CPT_SENDUSR
  • .Item(CdoConfiguration.cdoSendPassword) = MAIL_CPT_SENDPASS
  • .Item(CdoConfiguration.cdoSMTPServer) = MAIL_SMTP_SERVER
  • .Item(CdoConfiguration.cdoSMTPServerPort) = MAIL_SMTP_SERVERPORT
  • .Update
  • End With
  • objEmail.Send
  • SMTPSendMail = True
  • Exit Function
  • SMTPSendMail_Err:
  • MsgBox Err.Description
  • End Function
'''""""""""""""""""""""""""""""""""""""""""""""""""""'''
'
'   FONCTION : envoyer un mail par SMTP
' pstrTo : 1 ou plusieurs destinataire(s)
' pstrSubject : objet du mail
' pvarAttachFile : 1 ou plusieurs fichiers joints - string ou array de string
'
'''""""""""""""""""""""""""""""""""""""""""""""""""""'''
Public Function SMTPSendMail(pstrTo As String, pstrSubject As String, Optional pvarAttachFile As Variant) As Boolean
On Error GoTo SMTPSendMail_Err

    Dim i As Long
    Dim objEmail As New CDO.Message
    'Set objEmail = CreateObject("CDO.Message")
    
    objEmail.From = MAIL_FROM
    objEmail.To = pstrTo
    objEmail.Subject = pstrSubject
    
    ' Aucun corps de message, uniquement la pièce jointe
    ' laisser un TextBody avec chaine vide, sinon le mail peut planter (pièce jointe incomplète)
    objEmail.TextBody = ""
    
    ' Ajout de la pièce jointe, 1 ou plusieurs fichiers
    If Not IsMissing(pvarAttachFile) Then
        If IsArray(pvarAttachFile) Then
            ' parcourrir le tableau
            For i = LBound(pvarAttachFile) To UBound(pvarAttachFile)
                objEmail.AddAttachment pvarAttachFile(i)
            Next i
        Else
            objEmail.AddAttachment pvarAttachFile ' "C:\temp\Bon de commande.pdf"
        End If
    End If
    
    With objEmail.Configuration.Fields
        .Item(CdoConfiguration.cdoSendUsingMethod) = MAIL_SENDUSING
        .Item(CdoConfiguration.cdoSMTPAuthenticate) = MAIL_AUTHENTICATE
        .Item(CdoConfiguration.cdoSendUserName) = MAIL_CPT_SENDUSR
        .Item(CdoConfiguration.cdoSendPassword) = MAIL_CPT_SENDPASS
        .Item(CdoConfiguration.cdoSMTPServer) = MAIL_SMTP_SERVER
        .Item(CdoConfiguration.cdoSMTPServerPort) = MAIL_SMTP_SERVERPORT
        .Update
    End With
    objEmail.Send

    SMTPSendMail = True
Exit Function
SMTPSendMail_Err:
    MsgBox Err.Description

End Function

Conclusion

LA fonction renvoie TRUE en cas de succès, false sinon.

J'ai remarqué que si j'enlève la ligne suivante, les pièces jointes peuvent être illisibles (zip) ou incomplètes (pdf à moitié vierges!):
objEmail.TextBody = ""
Donc même si j'ai aucun texte dans le mail je le laisse.
 

Commentaires et avis

signaler à un administrateur
Commentaire de Apa 23 le 04/02/2008 10:48:20


Claire que la fonction est simple d'utilisation :)

NB : peut-on utiliser le format html ?

signaler à un administrateur
Commentaire de pifou25 le 04/02/2008 13:41:41

En fait oui, on peut utiliser le format HTML dans le mail, il suffit de remplacer Textbody par:
objEmail.TextBody = "... msg HTML ..."

signaler à un administrateur
Commentaire de guyvdv le 05/02/2008 18:38:33

Bj APA
J'ai essaié ta fonction dans un script simple en VB express 2005
Il y a deux error:
  'CdoConfiguration.' n'ai pas connue
  'IsMissing' non plus.
Peu tu M'aider
A+
Guy van der Velden

signaler à un administrateur
Commentaire de fil57 le 06/02/2008 10:44:58 7/10

super code simple et efficace, remplace WorldMerge(de coloradosoft qui doit être basé sur la même DLL) et intégré en MS Access.
Appréciable gain de temps

signaler à un administrateur
Commentaire de pifou25 le 06/02/2008 18:17:46

Guyvdv >
pour CdoConfiguration : comme j'ai dit dans la description il faut ajouter la référence "Microsoft CDO for windows 2000 library"
Mais surtout j'ai fait ça en VBA Access 2003 je doute que ça se traduise simplement en VB (je suppose .NET) 2005. en particulier le pb sur 'SiMissing' vient de la mais je ne sais pas t'aider plus.

signaler à un administrateur
Commentaire de guyvdv le 12/02/2008 10:26:38

Bj Apa
Le DLL je l'avais deja ajoute alors tu a raison, ca ne fonctionne pas en VB
Merci tou de meme
Guy van der velden

signaler à un administrateur
Commentaire de Apa 23 le 12/02/2008 15:09:13



J'ai un peu joué avec le CDO mais j'ai utilisé celui de exchange situé par défaut --> 'C:\Program Files\Common Files\Microsoft Shared\CDO\CDOEX.DLL'
le code s'execute parfaitement (en faisant qcq modif de syntaxe) sur Visual Basic 6.0 SP5 (--> Vielle école) ;)

Pour envoyer un mail HTML voici la commande en place de 'objEmail.TextBody'
ex : objEmail.HTMLBody = "<br><br><br><br>Hello World<br><br><br><br>" '__Les <br> c'est juste pour tester le code html

Je pense que vous pouvez aussi utiliser un fichier html (j'ai pas testé)
ex : strMonFichier = "C:\Pagededata.html"
objEmail.CreateMHTMLBody "file://" & strMonFichier '__Je ne suis pas sûr de la command 'CreateMHTMLBody' mais je pense que c'est bon

signaler à un administrateur
Commentaire de guyvdv le 13/02/2008 15:42:36 8/10

cherAPA

j telecharge cdoexe.dll chez www.dlldll.com (microsoft exige Outlook 7)
j copie le fichier dans le root du programme
ET CA FONCTIONNE
j deja envoie un email a moimeme
j donne 8 stars
merci
Guy

signaler à un administrateur
Commentaire de andalo le 23/05/2008 15:33:51

bonjour à tous
Je desespere de faire fonctionner ce code. En fait, je patauge encore un peu dans ces histoires de protocole SMTP et je commence à me poser des question existentielles :
1- Est il possible de faire fonctioner un tel code avec une adresse expediteur de type bidule@yahoo.fr, le serveur smtp etant alors smtp.yahoo.fr ou smtp.mail.yahoo.fr?
2- Ou faut il imperativement utiliser une adresse d'un fournisseur d'acces internet?
3- If  question 1 = False And quetion 2 = true then : Comment faire pour un envoie de mail auto, suis je oblige de connaitre le serveur smtp de la personne, son mot de pass et le smtp qui va bien avec, ou puis je m'autoenvoyer un mail en me servant de deux adresse perso a partir du poste d ela personne utilisant mon appli??

C'est peut etre un peu tordu mais dans ma tête c'est clair, même si je n'arrive pas a le faire!

signaler à un administrateur
Commentaire de katchi92 le 25/09/2008 19:16:33

Bonjour,
J'ai utilisé le code ci-après pour envoyer des e-mail sous excel en VBA mais sans client local.
FONCTION ENVOI DE MAIL PAR VBA SANS CLIENT LOCAL, PAR SERVEUR SMTP

Ce code fonctionne à merveille, chez moi avec ADSL, merci au développeur, mais pas à mon boulot car je passe par le réseau local.
Comment adapter ce code pour le faire fonctionner ?
Que veut dire les 2 premières ligne des constantes ?
         Public Const MAIL_SENDUSING = 2
         Public Const MAIL_AUTHENTICATE = 1
et la dernière
         Public Const MAIL_SMTP_SERVERPORT = 25

Merci d'avance,

PSWMK

signaler à un administrateur
Commentaire de pifou25 le 25/09/2008 22:58:33

ce n'est peut etre pas évident d'arriver à atteindre le serveur SMTP via un réseau local, il peut y avoir des pare-feu, proxy... tout un tas d'obstacle. et surtout le serveur peut vérifier qu'on ne l'atteind pas à partir de n'importe ou: votre FAI ADSL vous autorise lorsque vous etes connecté sur son réseau, mais de l'extérieux c'est probablement interdit!
De même ça me parait illusoire de vouloir utiliser le serveur SMPT de yahoo même si vous avez un compte chez eux. à mon avis les conditions requises sont:
utiliser une adresse d'un fournisseur et son serveur SMTP à condition d'être connecté chez lui
ou
avoir votre propre adresse mail (pas une redirection) avec un fournisseur de mail qui accepte les requetes SMTP
ou, le mieux: avoir son propre serveur SMTP sur un nom de domaine, entreprise ou réseau local!

signaler à un administrateur
Commentaire de Superbaba75 le 05/06/2009 10:53:51

Je vins d'inserer cette fonction au sein d'un de mes procedures vba [AC2007]mais j'obtiens systématiquement le message d'erreur suivant "Au moins un destinataire est requis, mais aucun n'a été trouvé."
Je précise que  objEmail.From = MAIL_FROM
pour la variable MAIL_FROM contient bien une adresse de messagerie du style "monadresse@free.fr", j'ai même tenté de déclaré la variable directement au sein de la procedure, même message...
Ensuite j'ai réactivé la ligne :

    Set objEmail = CreateObject("CDO.Message")

(qui était en commentaire dans l'exemple)
Toujours impossible de faire partir le mail


signaler à un administrateur
Commentaire de Superbaba75 le 05/06/2009 12:08:55

Oups !désolé mais encore une fois je me suis trop précipité ! le champs destinataire est à déclaré dans l'instruction :
                     objEmail.To = "adresseexpediteur@fai.fr"
j'ai donc corrigé mon erreur, dans le champ MAIL_FROM c'est bien mon nom ou l'entreprise qui doit y figurer...
Mais hélas une fois ces modifications apportées, j'obtiens un nouveau message d'erreur : "Le message n'à pu être envoyé vers le serveur SMTP. Le code erreur de transport était 0x80040217. La réponse du serveur était not available (non disponible ?)"
Pourtant au sein de mon module toutes les variables sont bien initialisées
Je fais l'essai directement sur place.
Ma messagerie est bien configurée sur le SMTP de leur fournisseur d'accès (wanadoo.fr)
J'utilise pour cet essai ma propre messagerie sur free, avec mon identifiant et mon propre mot de passe de messagerie.
par contre j'ai laissé les variables MAIL_SENDUSING  = 2 , MAIL_AUTHENTICATE = 1 , MAIL_SMTP_SERVERPORT = 25

signaler à un administrateur
Commentaire de Apa 23 le 05/06/2009 12:56:01


Voici ma fonction pour envoyer des mails : Ne t'occupe pas du 1er paralètre c'est juste ma gestion d'erreur, tu peux la retirer. Sinon tu remarqueras que je n'utilise pas le usr/pass car par défaut la dll utilise le compte internet actif.
Voilà en espèrant que cela te mette sur la voie. Sorry mais c'est du VB6 normalement ton code ne devrais pas être très différents.

'__Send email using exchange CDO
'__IN  : pstrFrom -> email of the sender (default test@test.be)
'__      pstrTo -> destination email
'__      pstrSubject -> email subject
'__      pstrEmailText -> email content
'__      pbHtmlMail -> pstrEmailText is on html or simple text
'__OUT : pRetErr -> errors infos
Public Function SendEmail_L2(ByRef pRetErr As RetErrInfo, _
                             ByVal pstrFrom As String, _
                             ByVal pstrTo As String, _
                             ByVal pstrSubject As String, _
                             ByVal pstrEmailText As String, _
                             ByVal pbHtmlMail As Boolean) As RetServerValue
1     Dim objEmail As New CDO.Message
On Error GoTo ERR_EXIT
2     SendEmail_L2 = RET_BAD

      '__Prepare mail data
3     objEmail.From = pstrFrom
4     objEmail.To = pstrTo
5     objEmail.Subject = pstrSubject
6     If (pbHtmlMail) Then
7       objEmail.HTMLBody = pstrEmailText
8     Else
9       objEmail.TextBody = pstrEmailText
10    End If

      '__Email configuration
11    With objEmail.Configuration.Fields
12      .Item(CdoConfiguration.cdoSendUsingMethod) = 2 '__MAIL_SENDUSING
13      .Item(CdoConfiguration.cdoSMTPAuthenticate) = 1 '__MAIL_AUTHENTICATE
14      .Item(CdoConfiguration.cdoSMTPServer) = g_strSmtpServer '__MAIL_SMTP_SERVER
15      .Item(CdoConfiguration.cdoSMTPServerPort) = g_nSmtpPort '__MAIL_SMTP_SERVERPORT
        '.Item(CdoConfiguration.cdoSendUserName) = MAIL_CPT_SENDUSR
        '.Item(CdoConfiguration.cdoSendPassword) = MAIL_CPT_SENDPASS
16      .Update
17    End With

18    objEmail.Send
19    DoEvents
20    SendEmail_L2 = RET_OK
21    Exit Function

22 ERR_EXIT:
23    pRetErr = GetErrMsg(Err, "", "SendEmail_L2", Erl)
End Function

signaler à un administrateur
Commentaire de Superbaba75 le 05/06/2009 14:36:21

Merci pour ton aide, mais je ne maitrise pas encore toutes les subtilités du VB..
J'ai donc un formulaire sous access avec un bouton qui déclenchera le départ du mail sur l'événement click.
Donc j'ai mis le code suivant sur mon bouton:
                     Private Sub EnvoiMailAuto_Click()
                     Call SendEmail_L2
                     End Sub

et j'ai recopié les lignes de ta fonction dans un module de mon application.
J'ai initialisé au début les variables concernant le test.
Mais au lancement de mon formulaire et du click sur le bouton,

Public Function SendEmail_L2(ByRef pRetErr As RetErrInfo, _
                             ByVal pstrFrom As String, _
                             ByVal pstrTo As String, _
                             ByVal pstrSubject As String, _
                             ByVal pstrEmailText As String, _
                             ByVal pbHtmlMail As Boolean) As RetServerValue

est surligné et j'obtiens le message suivant :

" Erreur de compilation
Type défini par l'utilisateur non defini"

?

signaler à un administrateur
Commentaire de Apa 23 le 06/06/2009 19:23:15

Oui c'est tout à fait normal comme je l'ai indiqué j'ai utilisé des gestions d'erreurs qui me sont propre remplace dans la déclaration de la fonction par ces lignes :

Public Function SendEmail_L2(ByVal pstrFrom As String, _
                             ByVal pstrTo As String, _
                             ByVal pstrSubject As String, _
                             ByVal pstrEmailText As String, _
                             ByVal pbHtmlMail As Boolean) As Long

Et voici à quoi doit ressembler le code de la fonction :

1     Dim objEmail As New CDO.Message
On Error GoTo ERR_EXIT
2     SendEmail_L2 = 2

      '__Prepare mail data
3     objEmail.From = pstrFrom
4     objEmail.To = pstrTo
5     objEmail.Subject = pstrSubject
6     If (pbHtmlMail) Then
7       objEmail.HTMLBody = pstrEmailText
8     Else
9       objEmail.TextBody = pstrEmailText
10    End If

      '__Email configuration
11    With objEmail.Configuration.Fields
12      .Item(CdoConfiguration.cdoSendUsingMethod) = 2 '__MAIL_SENDUSING
13      .Item(CdoConfiguration.cdoSMTPAuthenticate) = 1 '__MAIL_AUTHENTICATE
14      .Item(CdoConfiguration.cdoSMTPServer) = g_strSmtpServer '__MAIL_SMTP_SERVER
15      .Item(CdoConfiguration.cdoSMTPServerPort) = g_nSmtpPort '__MAIL_SMTP_SERVERPORT
        '.Item(CdoConfiguration.cdoSendUserName) = MAIL_CPT_SENDUSR
        '.Item(CdoConfiguration.cdoSendPassword) = MAIL_CPT_SENDPASS
16      .Update
17    End With

18    objEmail.Send
19    DoEvents
20    SendEmail_L2 = 1
21    Exit Function

22 ERR_EXIT:
23    Call Msgbox (Err.Description)

Chose important si tu utilises le CDO tu dois abolument avoir cette dll, répertoire par défaut 'C:\Program Files\Common Files\Microsoft Shared\CDO\CDOEX.DLL'

signaler à un administrateur
Commentaire de Superbaba75 le 08/06/2009 11:16:03

Merci pour tes explications, mais je viens de suivre tes indications, et j'obtiens toujours le même message/
"Le message n'à pas pu être envoyé...."
J'en déduis que les variables pour le from, to, subject sont bonnes sinon j'obtiendrai également un message d'erreur. ca bloque au moment de l'éxécution de ces lignes :

      '__Email configuration
    With objEmail.Configuration.Fields
      .Item(CdoConfiguration.cdoSendUsingMethod) = 2 '__MAIL_SENDUSING
      .Item(CdoConfiguration.cdoSMTPAuthenticate) = 1 '__MAIL_AUTHENTICATE
      .Item(CdoConfiguration.cdoSMTPServer) = g_strSmtpServer '__MAIL_SMTP_SERVER
      .Item(CdoConfiguration.cdoSMTPServerPort) = g_nSmtpPort '__MAIL_SMTP_SERVERPORT
        '.Item(CdoConfiguration.cdoSendUserName) = MAIL_CPT_SENDUSR
        '.Item(CdoConfiguration.cdoSendPassword) = MAIL_CPT_SENDPASS
      .Update
    End With

    objEmail.Send

?

signaler à un administrateur
Commentaire de Apa 23 le 08/06/2009 14:48:46


Es-tu sûr de ton server SMTP et de ton port. Essaie d'envoyer un mail avec outlook par example avec les même configuration si ça fonctionne sous outlook il n'y a aucune raison que cela ne fonctionne pas avec le CDO ou sinon cela peut-être aussi à cause de ton Anti-virus ou firewall qui autorise outlook à sortir mais pas ton soft.

signaler à un administrateur
Commentaire de Superbaba75 le 08/06/2009 15:10:52

Oui je suis sur de mon SMTP et de mon port, je possède incredimail et j'envoie  et reçois sans problèmes mes mails, de plus si j'utilise en interne accès pour convertir un état, la transformation en pdf et ensuite l'envoi directement par mail, il paMrt sans problèmes...
Merci pour ton aide.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

authentification SMTP [ par PatDeLaYaute ] Bonjour,je suis en train de faire un formulaire d'envoi de mail à partir de mon projet.Le problème pour envoyer le mail j'utilise le serveur de l'hebe Smtp avec authentification [ par Nicolas75 ] Bonjour à tousActuellement je réalise une petite appli en VB6 dans laquelle j'utilise le contrôle winsock pour un envoi par mail.Winsock que j'utilise envoi d mail via vb [ par kamilia911 ] kikou tt l monde,je vous explique mon cas. j ve envoyer des mail via  vb .j'ai mis le code suivant :Dim config As CDO.ConfigurationDim email As CDO.Me problème pour smtp [ par azzben ] Bonjours ,voila j'ai un problème avec mon smtp sur visual basic 2008 je vous donnes mes codes sources :Imports System.Web.mailImports System.Web.utilI Seveur SMTP:objSMTPClient = New System.Net.Mail.SmtpClient("smtp.live.com ", 25) [ par majdou345 ] Salut,est ce que les paramètres des cette fonction pour envoie d'email son juste???:objSMTPClient = New System.Net.Mail.SmtpClient("smtp.live.com",25) [déplacé VB.NET -> C#] Envoi de mail par SMTP [ par Nawaken ] Bonsoir, je tente avec un pote de faire un programme qui permet de s'enregistrer à un serveur de jeu.Mais quand je suis arrivé à la partie où il faut [VB6] Problème .Update(CDO.Message) [ par Reynas ] Bonjour tout le monde, Je sollicite votre aide car j'ai un petit souci j'ai recuperer un code afin de pouvoir envoyer des mails via VB6 avec la com Access -> Mail Outlook Access -> Internet Explorer [ par Sylvain93 ] Bonjour,Sous Access, j'ai un champs avec une adresse mail dedans, et je voudrais quand lorsque l'on clique dessus ca ouvre un nouveau message Outlook envoi de mail en vbscript [ par CHACHA31 ] Bonjour,j'utilise l'objet CDO (Set cdo=CreateObject("CDO.message")) pour envoyer des mails.Depuis que le serveur SMTP utilise une greylist, les envois


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,577 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.