[Excel 2003] .Send, envoi mail VBA : erreur
zoubinho
Messages postés
15
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Voici un problème récurrent. Je le remets une nouvelle fois sur le tapis pour savoir si quelqu'un a une update à proposer.
Lorsqu'on utilise la fonction
pour envoyer un mail automatique, une pop-up s'affiche et une progress bar de 5 secondes vous empêche de cliquer sur Oui/Yes. Cette pop-up permet d'éviter d'utiliser la messagerie Outlook de manière frauduleuse, et d'éviter la prolifération de mail bombers au travers d'un code VBA.
Cependant, pour les "gentils" qui cherchent tout simplement à créer une belle et jolie interface permettant d'envoyer jusqu'à une 50aine de mails autmatiques, ce n'est pas très simple de cliquer 50 fois...
Voilà la réponse trouvée sur un forum :
J'ai eu le même pb, j'ai un fichier Excel qui génère des mails et les envoie.
A priori, il est impossible de désactiver cette option, ça fait partie de la sécurité d'OutLook.
Tu es obligé de passer par une phase de validation de l'utilisateur, comme moi, je préfère vérifier mes destinataires et compagnie, je rajoute juste la commande
Ca force l'affichage du mail constitué sur le poste. L'utilisateur n'a plus qu'à appuyer sur le bouton Envoyer comme pour n'importe quel mail qu'il aurait écrit.
C'est la seule chose à faire, et elle est sans doute plus pratique dans le sens ou le message avec la barre de progression qui fait allusion à une application extérieure, aux virus, et le fait qu'il faille attendre 5 secondes avant de pouvoir valider le bouton Oui ... L'utilisateur Lamba pensera tout de suite au virus et fera Non 9 fois sur 10.
Mais envoyer le mail de manière invisible par Outlook 2003, impossible.
Y a-t-il un moyen de trouver des paramètres pour la fonction Send qui permettrait de contourner ce message de confirmation ?
Merci à tous pour votre feedback
Voici un problème récurrent. Je le remets une nouvelle fois sur le tapis pour savoir si quelqu'un a une update à proposer.
Lorsqu'on utilise la fonction
.Send
pour envoyer un mail automatique, une pop-up s'affiche et une progress bar de 5 secondes vous empêche de cliquer sur Oui/Yes. Cette pop-up permet d'éviter d'utiliser la messagerie Outlook de manière frauduleuse, et d'éviter la prolifération de mail bombers au travers d'un code VBA.
Cependant, pour les "gentils" qui cherchent tout simplement à créer une belle et jolie interface permettant d'envoyer jusqu'à une 50aine de mails autmatiques, ce n'est pas très simple de cliquer 50 fois...
Voilà la réponse trouvée sur un forum :
J'ai eu le même pb, j'ai un fichier Excel qui génère des mails et les envoie.
A priori, il est impossible de désactiver cette option, ça fait partie de la sécurité d'OutLook.
Tu es obligé de passer par une phase de validation de l'utilisateur, comme moi, je préfère vérifier mes destinataires et compagnie, je rajoute juste la commande
.display = true
Ca force l'affichage du mail constitué sur le poste. L'utilisateur n'a plus qu'à appuyer sur le bouton Envoyer comme pour n'importe quel mail qu'il aurait écrit.
C'est la seule chose à faire, et elle est sans doute plus pratique dans le sens ou le message avec la barre de progression qui fait allusion à une application extérieure, aux virus, et le fait qu'il faille attendre 5 secondes avant de pouvoir valider le bouton Oui ... L'utilisateur Lamba pensera tout de suite au virus et fera Non 9 fois sur 10.
Mais envoyer le mail de manière invisible par Outlook 2003, impossible.
Y a-t-il un moyen de trouver des paramètres pour la fonction Send qui permettrait de contourner ce message de confirmation ?
Merci à tous pour votre feedback
A voir également:
- [Excel 2003] .Send, envoi mail VBA : erreur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Programmer envoi mail gmail - Guide
- Windows live mail - Télécharger - Mail
- Envoi mail cci - Guide
2 réponses
Bonjour,
Par curiosité j'ai regardé le pb. J'ai trouvé une solution mais je ne sais pas si tu connaissais déjà, ni si elle est généralisable et surtout si elle est applicable dans ton cas. J'ai réussi à le faire fonctionner chez moi (avec Outlook 2003).
J'ai trouvé un freeware qui s'appelle Mapilab et qui permet de gérer la stratégie de sécurité de Outlook.
Il est téléchargeable ici : https://www.mapilab.com/download/ (chapitre Advanced Security for Outlook)
Après l'installation de mapilab, il suffit de relancer Outlook. Alors au premier lancement de ta macro Excel, Mapilab te demande quelle stratégie de sécurité tu souhaite adopter. Si tu réponds "allow access" et que tu coches la case "always" alors il ne pose plus la question pour les envois de mail.
Bien sur il faut avoir les droits suffisants pour installer cet utilitaire et gérer la stratégie de sécurité sur ta machine mais bon ....
Voilà je ne suis pas allé plus loin
A+
Par curiosité j'ai regardé le pb. J'ai trouvé une solution mais je ne sais pas si tu connaissais déjà, ni si elle est généralisable et surtout si elle est applicable dans ton cas. J'ai réussi à le faire fonctionner chez moi (avec Outlook 2003).
J'ai trouvé un freeware qui s'appelle Mapilab et qui permet de gérer la stratégie de sécurité de Outlook.
Il est téléchargeable ici : https://www.mapilab.com/download/ (chapitre Advanced Security for Outlook)
Après l'installation de mapilab, il suffit de relancer Outlook. Alors au premier lancement de ta macro Excel, Mapilab te demande quelle stratégie de sécurité tu souhaite adopter. Si tu réponds "allow access" et que tu coches la case "always" alors il ne pose plus la question pour les envois de mail.
Bien sur il faut avoir les droits suffisants pour installer cet utilitaire et gérer la stratégie de sécurité sur ta machine mais bon ....
Voilà je ne suis pas allé plus loin
A+
Bonjour,
J'ai aussi rencontrez ce problème que j'ai contourner en instanciant un objet [ OutlookExpress ] ,
qui est présent par défaut sous WXP et ce même s'il n'est pas configurer.
À la demande de certains CCMISTES, j'ai inclu beaucoup de commentaire statique dans le code.
J'ai aussi rencontrez ce problème que j'ai contourner en instanciant un objet [ OutlookExpress ] ,
qui est présent par défaut sous WXP et ce même s'il n'est pas configurer.
À la demande de certains CCMISTES, j'ai inclu beaucoup de commentaire statique dans le code.
Option Explicit
'
'Déclaration de constantes
Const PourLecture = 1
Const cteAdresseSource = "monadresse@monserveur.net"
Private Sub cmd_Click(Index As Integer)
' Ici le paramètre signifie que le bouton
' fait partie d'un groupe et l'Index est le no
' du bouton
If (Index > 0) Then
' Déclaration de variables
' Objet courriel
Dim objMail As Object
' Adresse de destination
Dim sDestination As String
' Nom du fichier en pièce jointe
Dim sPieceJointe As String
' Variable contenant l'objet du courriel
Dim msgTitre As String
' Variable contenant le corps du message
Dim msgTexte As String
' Variable boolèen pour savoir si
' on doit incluse le texte du fichier
' texte dans le corps du message ou
' si on doit inclure le fichier en
' pièce jointe
Dim Drapeau As Boolean
' Instancié un objet "courriel"
Set objMail = CreateObject("CDO.Message")
' Initialisation de la variable
Drapeau = False
' Affectation de l'adresse courriel du destinataire
sDestination = "destinataire@serveur.net"
' Affectation du titre
msgTitre = "Automatisme"
' Affectation du corps di message
msgTexte = "Bonjour," & vbLf & "Corps du message"
' Affectation du nom du fichier incluant sa localisation
sPieceJointe = "D:\Monfichier.txt"
' D'où pièce jointe existe -> Drapeau = Vrai
Drapeau = True
' Avec objet courriel
With objMail
' Ligne à modifier selon l'adresse de l'envoyeur
' Affectation à la propriété [ .From ] de l'adresse
' de l'envoyeur
.From = cteAdresseSource
' Idem pour le destinataire
.To = sDestination
' Affectation du titre ( objet du message )
.Subject = msgTitre
' Ligne à modifier selon le texte voulu !
' Si pièce jointe existe
If (sPieceJointe <> "") Then
' Si le texte de la pièce jointe doit
' être inclus dans le corps - Utilisation de la
' fonction [ LirePieceJointe ] qui retourne le
' contenu du fichier texte
If (Drapeau = True) Then
.TextBody = msgTexte & vbLf & LirePieceJointe(sPieceJointe) & vbLf
Else
' Sinon spécifié qu'il est inclu en pièce jointe
' dans le corps du message
.TextBody = msgTexte & vbLf & "Pièce jointe incluse : " & vbLf
End If
Else
' Sinon spécifié dans le corps qu'il n'y a pas de pièce jointe
.TextBody = msgTexte & vbCrLf & "Aucune Pièce jointe" & vbCrLf
End If
' Ligne à modifier selon l'adresse du serveur SMTP
' Ici "smtp.serveur.net" doit correspondre à votre FAI
' exemple : [ smtp.free.fr ]
.Configuration.Fields _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.serveur.net"
' Aucune modification à cette ligne
.Configuration.Fields _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
' Aucune modification à cette ligne
.Configuration.Fields.Update
' Si on veut inclure le fichier en pièce jointe
If ((sPieceJointe <> "") And (Drapeau = False)) Then
objMail.AddAttachment (sPieceJointe)
End If
' Envoyer le message
.Send
End With
' Libération de l'objet instancié
Set objMail = Nothing
MsgBox "Courriel envoyé !"
Else
' Fermeture de la forme pour envoi de courriel
Unload Me
End If
End Sub
'
' Ici la fonction n'étant pas typé, elle est de type Variant
' et peut retourner a peu près n'importe quoi.
Function LirePieceJointe(LeFichier)
Dim objFSO, CeFichier
' Instancié un objet du système de fichier
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Si le fichier existe
If (objFSO.FileExists(LeFichier)) Then
' Instancié un poignée sur le fichier pour l'ouvrir ( une main sur )
Set CeFichier = objFSO.OpenTextFile(LeFichier, PourLecture)
' Lire tout le contenu du fichier
LirePieceJointe = CeFichier.ReadAll
' Fermer le fichier
CeFichier.Close
' Libérré l'objet du fichier
Set CeFichier = Nothing
End If
' Libérré l'objet du système de fichier
Set objFSO = Nothing
End Function
'
Je teste cela de suite et vous donne un retour asap :)
Mais vu comme ça ça à l'air d'être un très bon workaround à une solution à développer (qui n'a pas l'air d'être envisageable de toute façon^^)
'vous tiens au jus !