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   -
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.

Configuration: Windows XP
Internet Explorer 6.0

1 réponse

  1. Dulfalas Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    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)

    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)
    0
    1. Dulfalas Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
       
      Bon, j'ai reussi a trouver une solution pour mon envoit de piece jointe mais j'ai un nouveau problème, pour mon envoit j'utilise maintenant ce code :

      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 Sub



      problè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 ?
      0