none
CDOEXM CreateMailbox Accès Refusé ! RRS feed

  • Question

  • <p>Bonjour, je suis en train de développer une appli gérant des utilisateurs d'un AD ainsi que leur boite mail sur Exchange.</p><p>Je cherche à créer une boite mail pour un utilisateur existant. J'utilise la méthode CreateMailbox. Celle ci me génère une exception : Accès Refusé</p><br><p><br></p><p>Je travail sur un ordinateur distant du domaine où est connecté le serveur Exchange ainsi que l'AD. Est il possible de se connecter à distance au domaine afin de créer des boites mail ??</p><br><p><br></p><p>Merci</p><br><p><br></p><p>Guillaume</p><br><p><br></p><p>PS : Voir code ci dessous<br></p><p><br></p><p><br></p><p><br></p><p><br></p><p><br></p><p><br></p><p><br></p><p><br></p><p><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Try<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim homeMDB As String = MyHomeMDB<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim MailBox As CDOEXM.IMailboxStore<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'This creates the new user in the "users" container.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("Connexion à l'AD")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim User As New DirectoryEntry("LDAP://domaine/CN=EssaiEx,OU=test", "Administrator", "Hosteam")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("Le user choisi est : " + User.Name)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("Copie des données du User vers la boite")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MailBox = User.NativeObject<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("Création de la boite mail")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MailBox.CreateMailbox(homeMDB)'Exception !!<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Obtain the IMailboxStore interface, create the mailbox, and commit the changes.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User.CommitChanges()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Catch ex As Exception<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("Erreur dans la Création de la boite mail !" + ex.Message)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Try</p><br><br><br><br><br><br><br>
    • Déplacé Tagore Bandlamudi jeudi 4 février 2010 05:44 Forums Consolidation (Origine :Exchange 2000/2003)
    mercredi 27 juin 2007 14:19

Toutes les réponses

  • Bonsoir,

     

    votre message est difficilement lisible ! j'ai cru deviner ceci...

     

    Plutôt qu'utiliser la méthode "createMailbox" qui ne fonctionne QUE sur un serveur Exchange 2000/2003, il préférable d'utiliser une méthode ne faisant appel qu'à Active Directory (et LDAP).

    => ceci aura l'avantage de fonctionner aussi sur Exchange 2007 à partir d'une simple station.

     

    Voici un extrait d'un de mes programmes sur le sujet. Regarde avec ADSIEDIT.MSC le format exact de chaque champ (HomeMdb, HomeMTA,...)

     

    oUser.put "HomeMdb", DistinguishedNameBanquePrive
      oUser.put "HomeMTA", DistinguishedNameHomeMta
      oUser.put "msExchHomeServerName", ExchangeHomeServer
    '  oUser.put "mail", AdresseEmail

     oUser.put "mailnickname", Alias

      
      Set TypeLib = CreateObject("Scriptlet.TypeLib")
      NewGuid = Replace(TypeLib.Guid, "-", "")
      NewGuid = Mid(NewGuid, 2, Len(NewGuid) - 4)
    ' MsgBox (NewGuid)
      j = 0
      ReDim tmp(j)
      For i = 1 To Len(NewGuid) Step 2
        s = UCase(Mid(NewGuid, i, 2))
        car = converthexa(s)
        ReDim Preserve tmp(j)
        tmp(j) = car
        j = j + 1
      Next
     
      oUser.put "msExchMailboxGuid", Array(tmp)
      Set TypeLib = Nothing
     
      oUser.setinfo
      If Err.Number <> 0 Then
        Message = Message + vbCrLf + "Les attributs Exchange n'ont pas pu être modifiés"
    '    MsgBox ("Les attributs Exchange n'ont pas pu être modifiés")
        Err.Clear
      Else
        Message = Message + vbCrLf + "La boîte a été créée"
      End If

    ----------------------------------

    Function converthexa(st)
    d = Right(st, 1)
    Select Case d
      Case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
        converthexa = Asc(d) - 48
      Case "A", "B", "C", "D", "E", "F"
        converthexa = Asc(d) - 55
    End Select

    g = Left(st, 1)
    Select Case g
      Case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
        converthexa = converthexa + 16 * (Asc(g) - 48)
      Case "A", "B", "C", "D", "E", "F"
        converthexa = converthexa + 16 * (Asc(g) - 55)
    End Select

    End Function

    mercredi 27 juin 2007 20:17
    Modérateur
  • Bonjour, je reviens sur ce post 1 an après, car le problème ce pose pour moi aujourd'hui.

    Je suis également sous Exchange 2007 et je ne parviens pas à utiliser votre script pour créer une boite mail. Lorsque que je l'exécute il me renvoi une erreur au niveau de la ligne

     

    oUser.put "msExchMailboxGuid", Array(tmp)

     

    Array(tmp) pose problème...

    J'ai modifié le code pour mettre directement le NewGuid dedans, mais là lorsque j'arrive à la ligne

     

    oUser.setinfo

     

    il me renvoi l'erreur "violation de contrainte". Je suppose que cela vient du fait qu'il faut lui passer un nombre hexadécimal. Je suppose que c'est ce que vous faites grâce à

     

    Array(tmp)

     

    Si vous pouviez m'aider, je n'ai pas très envie de faire du powershell...

    jeudi 24 juillet 2008 06:54
  • Bonsoir

     

    avez-vous pu dimensionner la variable tmp en tant que tableau?  dim tmp()

     

    A noter que le script que j'ai indiqué fonctionne effectivement pour Exchange 2000 à 2007... MAIS, il n'est pas parfait pour Exchange 2007.

     

    En effet, une boîte ainsi créée sur Exchange 2007 sera vue en tant que "Legacy User". Cela fonctionne donc bien avec Outlook, mais pas pour l'accès par OWA.

    Une commande Powershell est alors la seule solution pour transformer la boîte en "Mailbox user".

     

    A bientôt,

    Cordialement

     

     

    jeudi 24 juillet 2008 20:16
    Modérateur
  • Bonjour

     

    Oui pourtant j'ai bien dimensionner la variable tmp, et le tableau affiche correctement son contenu lorsque je fais tmp(0), tmp(1)...

     

    Mais bon si ce n'est pas très "propre" je ne vais pas me lancer dans du bidouillage... si je dois utiliser powershell, alors je l'utiliserais...

     

    Merci d'avoir répondu aussi vite, ça m'évite de perdre mon temps!

    Bonne journée

    vendredi 25 juillet 2008 06:42