SendObject: le mail n'arrive pas
Dulfalas
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
Dulfalas Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Dulfalas Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour a tous,
Je développe actuellement pour mon stage un logiciel access qui a moment donné doit effectuer un envoit de mail automatique. Apres quelques recherches j'ai trouvé la methode SendObject et je l'ai utilisé. Mon code VB et de la forme :
DoCmd.SendObject acSendNoObject, "", "", "toto@free.fr", "", "", "toto", "toto toto tata", True
un seul soucis: le mail n'arrive jamais a destination. Je n'ai aucun message d'erreur de la part d'access, ni du logiciel qui s'ouvre lors du lancement du mail (je supose qu'il s'agit d'outlook), mais une fois que je vais vérifier dans ma boite mail, aucun message ne s'y trouve. Et la j'avoue etre dépassé ^^
Quelqu'un pourrait m'aider a y voir plus clair et a résoudre mon problème svp ?
Merci d'avance ^^
Edit: Un petit indice peut etre, il semblerait que les messages ne soient envoyés que lorsque j'ouvre moi même ma boite outlook avant de lancer la procédure d'envoit automatisée.
Je développe actuellement pour mon stage un logiciel access qui a moment donné doit effectuer un envoit de mail automatique. Apres quelques recherches j'ai trouvé la methode SendObject et je l'ai utilisé. Mon code VB et de la forme :
DoCmd.SendObject acSendNoObject, "", "", "toto@free.fr", "", "", "toto", "toto toto tata", True
un seul soucis: le mail n'arrive jamais a destination. Je n'ai aucun message d'erreur de la part d'access, ni du logiciel qui s'ouvre lors du lancement du mail (je supose qu'il s'agit d'outlook), mais une fois que je vais vérifier dans ma boite mail, aucun message ne s'y trouve. Et la j'avoue etre dépassé ^^
Quelqu'un pourrait m'aider a y voir plus clair et a résoudre mon problème svp ?
Merci d'avance ^^
Edit: Un petit indice peut etre, il semblerait que les messages ne soient envoyés que lorsque j'ouvre moi même ma boite outlook avant de lancer la procédure d'envoit automatisée.
1 réponse
J'ai trouvé une solution qui me convient a peu pres: j'ouvre automatiquement outlook avant chaque envoit de mail grace au code suivant (trouvé sur le net)
un autre soucis se pose alors.
Apres mon envoit de mail j'utilise la commande " set outlook = nothing " pour quiter outlook mais ca ne le ferme pas. Et si l'utilisateur le ferme a la main, lors de l'envoit de mail suivant le programme considère qu'il est encore ouvert, et donc ne le réouvre pas, cependant ensuite le mail ne part pas, car outlook est fermé Oo
une solution de fortune considère a ouvrir sans condition outlook a chaque envoit, mais dans ce cas, si outlook est deja ouvert on a 2 fenetres outlook, si il est ouvert 2 fois on en a 3... etc
j'aimerais donc de l'aide pour fermer outlook automatiquement.
De plus, j'aimerais pouvoir bind a la fin du mail une signature automatique mais je ne trouve pas de manière de le faire (sachant qu'il n'y a qu'une seule signature par compte mais qu'on ignore son nom a chaque fois)
Function Outlook_LOGIN() As Boolean
Dim MAILBOX_STATE, Folder
On Error GoTo Outlook_Login_Err
Set Outlook = GetObject(, "Outlook.Application")
If Outlook Is Nothing Then
recup_err:
Set Outlook = CreateObject("Outlook.Application")
Set MAPI = Outlook.GetNamespace("MAPI")
MAILBOX_STATE = 200
Set Folder = MAPI.GetDefaultFolder(6)
Folder.Display
End If
Exit Function
Outlook_Login_Err:
If Err.Number <> 0 Then
If Err.Number = 429 Then
GoTo recup_err
End If
Exit Function
End If
End Function
un autre soucis se pose alors.
Apres mon envoit de mail j'utilise la commande " set outlook = nothing " pour quiter outlook mais ca ne le ferme pas. Et si l'utilisateur le ferme a la main, lors de l'envoit de mail suivant le programme considère qu'il est encore ouvert, et donc ne le réouvre pas, cependant ensuite le mail ne part pas, car outlook est fermé Oo
une solution de fortune considère a ouvrir sans condition outlook a chaque envoit, mais dans ce cas, si outlook est deja ouvert on a 2 fenetres outlook, si il est ouvert 2 fois on en a 3... etc
j'aimerais donc de l'aide pour fermer outlook automatiquement.
De plus, j'aimerais pouvoir bind a la fin du mail une signature automatique mais je ne trouve pas de manière de le faire (sachant qu'il n'y a qu'une seule signature par compte mais qu'on ignore son nom a chaque fois)
Sub UseOutlook() Call RecupInfo(MailFourn, MailEmp, CorpTexte, Entete, PieceJointe) Dim Mail_Outlook As Object Dim Message_Outlook As Object Dim Body_mail As String Set Outlook = CreateObject("Outlook.Application") Call Outlook_LOGIN Set Message_Outlook = Outlook.CreateItem(0) Message_Outlook.To = MailFourn Message_Outlook.Cc = MailEmp & "; ***@***.com; ***@***.com" Message_Outlook.Bcc = "" Message_Outlook.Subject = Entete Message_Outlook.body = CorpTexte Message_Outlook.Attachments.Add PieceJointe Message_Outlook.Display 'Message_Outlook.send en commentaire car je veux que ce soit l'utilisateur qui envoi le mail. Set Outlook = Nothing End Subproblème : mon ancien code générait une erreur quand on fermait outlook sans avoir envoyé le mail, et lui non. Or j'ai besoin de cette erreur car si outlook est fermé avant l'envoit du mail un enregistrement dans ma base de donnée ne doit pas etre fait. Quelqu'un a une idée sur la solution a ce problème: comment a partir de ce code stopper le programme sur un message d'erreur si on ferme outlook sans envoyer le mail ?