Question Créer un rendez vous Outlook

Plus d'informations
il y a 16 ans 2 mois #5841 par TimCruz
Bonjour à tous,

J'ai besoin (encore) de votre aide. Il me faut créer des rendez vous exchange/outlook sur les calendriers d'utilisateurs à partir d'une application SQL maison.

Je vais donc aller chercher les infos relatives aux rendez vous sur mes bases et créer les rendez vous sur les calendriers via powserhell.

Pour créer les rendez vous, j'utilise le script suivant :
[code:1]$olAppointmentItem = 1
$o = new-object -comobject outlook.application
$rdv = $o.CreateItem($olAppointmentItem)

$date = read-host \"Entrez la date de la réunion au format mois/jour/année heure:minute:«»seconde - ex: 12/30/2009 12:00:00\"
$duration = read-host \"indiquez en chiffre la durée en minutes de la réunion - ex : 60 (si la réunion dure 1 heure)\"
$subject = read-host \"Entrez L'objet du message\"
$body = read-host \"Entrez le corps du message\"
$location = read-host \"Indiquez le lieu de la réunion\"

#Format de date de type mois/jour/année heure:minute:«»seconde
$rdv.Start = $date
#durée en minutes du rendez vous
$rdv.Duration = $duration
#Sujet du rendez vous
$rdv.Subject = $subject
#Corps du message
$rdv.Body = $body
#Localisation de la réunion
$rdv.Location = $location
#Message d'alerte 15 minutes avant le rendez vous
$rdv.ReminderMinutesBeforeStart = 15

$rdv.ReminderSet = $True
$result = $rdv.Save()
[/code:1]

Pour aurez remarqué, actuellement, les variables correspondantes au rendez-vous se remplissent à la main. Je l'automatiserait ensuite depuis le SQL.

Ca me crée sans problème un rendez vous dans mon Outlook. Le problème est que je veux me connecter sur le compte Exchange/Outlook d'autres personnes et je ne sais pas comment le à le faire.

Pourriez vous m'aider s'il vous plait? Merci d'avance.<br><br>Message édité par: TimCruz, à: 29/12/09 14:24

\\"Il n\'y a pas de problème, il n\'y a que des solutions\\"

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 2 mois #5844 par Laurent Dardenne
TimCruz écrit:

Le problème est que je veux me connecter sur le compte Exchange/Outlook d'autres personnes et je ne sais pas comment le à le faire.

Je n'ai jamais fait,mais je regarderais déjà l'objet Namespace qui propose les méthodes Logon/Logoff.
Sinon étudie les objets CDO .

Il doit y avoir qq exemples de code ici .
C'est plus qq pistes qu'une solution.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 2 mois #5848 par TimCruz
Réponse de TimCruz sur le sujet Re:Créer un rendez vous Outlook
Merci. J'ai tenté d'avancer avec le namespace. Pour ce faire, je me suis (entre autre) référé à ce site : msdn.microsoft.com/en-us/library/bb219914.aspx

Mais (car il en faut toujours un), je ne parviens pas à formuler correctement la commande. J'ai tenté :
[code:1]$olAppointmentItem = 1
$o = new-object -comobject outlook.application
$namespace = $o.GetNamespace(\&quot;MAPI\&quot;«»)
$nameSpace.Logon = \&quot;LoginWindowsDeMonUser, , True, True\&quot;
[/code:1]
Mais ca me renvoie l'erreur
[code:1]Impossible de définir la propriété Value de l'objet PSMemberInfo de type « Syst
em.Management.Automation.PSMethod ».
Au niveau de G:\Informatique\exchange\scripts\rdv.ps1 : 4 Caractère : 12
+ $nameSpace.L &lt;&lt;&lt;&lt; ogon = \&quot;LoginWindowsDeMonUser, , True, True\&quot;
[/code:1]

J'ai également tenté [code:1]$olAppointmentItem = 1
$o = new-object -comobject outlook.application
$namespace = $o.GetNamespace(\&quot;MAPI\&quot;«»)
$nameSpace.Logon (\&quot;LoginWindowsDeMonUser\&quot;, , True, True)
[/code:1]

ce qui m'a valu l'erreur :
[code:1]Jeton « ( » inattendu dans une expression ou une instruction.
Au niveau de G:\Informatique\exchange\scripts\rdv.ps1 : 4 Caractère : 19
+ $nameSpace.Logon (\&quot; &lt;&lt;&lt;&lt; VP\&quot;, , True, True)
[/code:1]

Auriez-vous des idées pour m'aider? Désolé, je débute...

\\"Il n\'y a pas de problème, il n\'y a que des solutions\\"

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 2 mois #5849 par Laurent Dardenne
C'est une méthode d'objet, donc pas d'espace entre le nom et (
[code:1]
$nameSpace.Logon(\&quot;Profile\&quot;,\&quot;PWD\&quot;, $True, $True)
[/code:1]
Pour le détail de la méthode sous PS :
[code:1]$nameSpace.Logon.OverloadDefinitions[/code:1]

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 2 mois #5850 par TimCruz
Réponse de TimCruz sur le sujet Re:Créer un rendez vous Outlook
Merci Laurent. Alors, je tourne en rond et comme à devenir fou :

- Avec ce code :
[code:1]$olAppointmentItem = 1
$o = new-object -comobject outlook.application
$namespace = $o.GetNamespace(\&quot;MAPI\&quot;«»)
$nameSpace.Logon(\&quot;USER\&quot;,\&quot;\&quot;, $false, $true)

$rdv = $o.CreateItem($olAppointmentItem)

$date = read-host \&quot;Entrez la date de la réunion au format mois/jour/année heure:minute:«»seconde - ex: 12/30/2009 12:00:00\&quot;
$duration = read-host \&quot;indiquez en chiffre la durée en minutes de la réunion - ex : 60 (si la réunion dure 1 heure)\&quot;
$subject = read-host \&quot;Entrez L'objet du message\&quot;
$body = read-host \&quot;Entrez le corps du message\&quot;
$location = read-host \&quot;Indiquez le lieu de la réunion\&quot;

#Format de date de type mois/jour/année heure:minute:«»seconde
$rdv.Start = $date
#durée en minutes du rendez vous
$rdv.Duration = $duration
#Sujet du rendez vous
$rdv.Subject = $subject
#Corps du message
$rdv.Body = $body
#Localisation de la réunion
$rdv.Location = $location
#Message d'alerte 15 minutes avant le rendez vous
$rdv.ReminderMinutesBeforeStart = 15

$rdv.ReminderSet = $True
$result = $rdv.Save()

[/code:1]
Le rendez vous n'est envoyé que si on a une session Outlook (au nom du destinataire du RDV) sur le poste sur lequel le script est exécute. Sinon, le script est rajouté sur le calendrier du poste qui exécute le script.

En ayant eu marre, j'ai voulu tenter de profiter du fait que les calendriers Exchange gère le iCal; J'ai donc créé 2 nouveaux scripts :
Création du ics (ical) :
[code:1]#Variables relatives au fichier ical de rendez-vous :
$BEGIN1 = 'BEGIN:VCALENDAR'
$PRODID = 'PRODID:-//EXCHANGE//EXCHANGE.MONDOMAINE.FR/EN'
$VERSION = 'VERSION:2.0'
$CALSCALE = 'CALSCALE:GREGORIAN'
$METHOD = 'METHOD:REQUEST'
$BEGIN2 = 'BEGIN:VEVENT'
$DTSTART = 'DTSTART;VALUE=DATE:20091231'
$DTEND = 'DTEND;VALUE=DATE:20100101'
$DTSTAMP = 'DTSTAMP:20091228T100415Z'
$ORGANIZER = 'ORGANIZER:mailto:user@domaine.fr'
$UID = 'UID:user@domaine.fr'
$ATTENDEE1 = 'ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=
TRUE;CN=muser@domaine.fr;X-NUM-GUESTS=0:mailto:user@domaine.fr'
$ATTENDEE2 = 'ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;RSVP=TRUE
;CN=user@domaine.fr;X-NUM-GUESTS=0:mailto:user@domaine.fr'
$CREATED = 'CREATED:20091228T100339Z'
$DESCRIPTION = 'DESCRIPTION:TEST ICAL AFTER 12H00'
$LASTMODIFIED = 'LAST-MODIFIED:20091228T100404Z'
$LOCATION = 'LOCATION:TOTO'
$SEQUENCE = 'SEQUENCE:1'
$STATUS = 'STATUS:CONFIRMED'
$SUMMARY = 'SUMMARY:TEST ICAL'
$TRANSP = 'TRANSP:OPAQUE'
$END1 = 'END:VEVENT'
$END2 = 'END:VCALENDAR'

#Création du rendez vous ical
$ALL = \&quot;$BEGIN1`n$PRODID`n$VERSION`n$CALSCALE`n$METHOD`n$BEGIN2`n$DTSTART`n$DTEND`n$DTSTAMP`n$ORGANIZER`n$UID`n$ATTENDEE1`n$ATTENDEE2`n$CREATED`n$DESCRIPTION`n$LASTMODIFIED`n$LOCATION`n$SEQUENCE`n$STATUS`n$SUMMARY`n$TRANSP`n$END1`n$END2\&quot;
$ALL | OUT-FILE c:\test.ics
[/code:1]

Envoie du iCal par mail :
[code:1]#Envoie du mail de rendez vous
$expediteur = 'Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.'
$destinataire = 'Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.'
$serveur = 'serveur.domaine.fr'
$fichier = 'c:\test.ics'
$objet = 'Nouveau rendez vous de formation'
$texte = \&quot;Un nouveau rendez vous de formation a été créé il est en pièce jointe.

Pour le valider, merci d'ouvrir le fichier test.ics en pièce jointe\&quot;

$message = new-object System.Net.Mail.MailMessage $expediteur, $destinataire, $objet, $texte

$attachment = new-object System.Net.Mail.Attachment $fichier
$message.Attachments.Add($attachment)
$client = new-object System.Net.Mail.SmtpClient $serveur
$client.Credentials = [System.Net.CredentialCache]::«»DefaultNetworkCredentials

$client.Send($message)
[/code:1]

Ca marche, mais... Le problème est que le fichier *.ics doit être ouvert pour que le rendez-vous soit validé. Je voudrais créer un mail qui crée directement le rendez vous ou même directement alimenter le calendrier sans passer par l'étape mail.

Je sèche vraiment... Je vais continuer de creuser le truc mais si vous pouviez me donner un coup de main, ce serait très sympa.<br><br>Message édité par: TimCruz, à: 23/02/12 11:32

\\"Il n\'y a pas de problème, il n\'y a que des solutions\\"

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 2 mois #5851 par Laurent Dardenne
TimCruz écrit:

Alors, je tourne en rond et comme à devenir fou :

Au début PowerShell n'a pas que des avantages :P
TimCruz écrit:

Le rendez vous n'est envoyé que si on a une session Outlook (au nom du destinataire du RDV) sur le poste sur lequel le script est exécute. Sinon, le script est rajouté sur le calendrier du poste qui exécute le script.

C'est ce que je craignais, le nom du 1er paramètre de la méthode logon est Profile et pas account.
TimCruz écrit:

Je sèche vraiment...

De mon coté je ne connais pas Exchange, cette tâche me semble possible, reste à savoir quel objet/méthode utiliser.
Le mieux avant de coder est de rechercher sur le net des exemples VBA/C#/ voir C++.
Par exemple \&quot;exchange create Appointment\&quot; sur Google renvoi ce lien , reste à savoir si cela correspond à ton contexte/besoin/etc.
Sinon poste dans les newsgroups de MS, comme indiqué ici (l'exemple contient une référence au provider ADO ExOLEDB ,une autre piste à explorer ;) ) ou .

Je te conseille de lâcher le code et de prendre le temps de rechercher. Une fois trouvé les mots-clé, la suite te sera plus facile.<br><br>Message édité par: Laurent Dardenne, à: 30/12/09 15:51

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.113 secondes
Propulsé par Kunena