2010-06-21 5 views
2

J'ai un fichier .msg sur mon système de fichiers. Avec powershell je peux ouvrir une fenêtre Outlook avec le message simplement comme ceci:Envoyer un e-mail via Powershell et Outlook

Invoke-Item "MY MAIL.msg" 

Comment changer le sujet et le transmettre à une adresse donnée par Powershell?

Merci à l'avance

+0

Vous n'avez pas accepté la réponse @Iain (qui semble être la bonne). Je rencontre le même popup ennuyeux (Office 2003). Avez-vous travaillé d'une manière ou d'une autre sur la réponse d'Iain ou avez-vous adopté une solution alternative? –

+0

une solution finale avec un échantillon de code source complet à ce sujet? – Kiquenet

Répondre

3

Vous pouvez essayer quelque chose comme ça, fonctionne avec Outlook 2010

$ol = New-Object -comObject Outlook.Application 
gm -InputObject $ol 
$mail = $ol.Session.OpenSharedItem("C:\Users\fred\Desktop\Test Email Subject.msg") 
$mail.Forward() 
$Mail.Recipients.Add("[email protected]") 
$Mail.Subject = "Test Mail" 
$Mail.Body = " Test Mail 22222 " 
$Mail.Send() 
+1

Salut, cela fonctionne, mais je reçois des fenêtres pop-up de sécurité ennuyeux et des messages de perspectives qui rendent l'utilisation de ce script inutile pour mon but que j'ai besoin de masser des milliers de courriels – pistacchio

+1

Je ne reçois pas cet avertissement dans Outlook 2010, mais je Connaissez l'avertissement dont vous parlez, dans le travail d'interopérabilité précédent que j'ai fait, j'ai essayé d'implémenter un correcteur de sécurité, mais je n'ai jamais réussi à le faire fonctionner http://msdn.microsoft.com/fr-fr/library/aa140152%28office.10 % 29.aspx Espérons que cela aide – Iain

+0

@Iain, salut, vous maintenant si cette fenêtre pop ennuyante est présente dans Office 2007? Etes-vous sûr qu'il n'est pas présent en 2010? Cela ne signifie-t-il pas diminuer les fonctionnalités de sécurité? –

0

Dans PowerShell 2.0 il y a une applet de commande Send-MailMessage qui vous permet de joindre des fichiers, spécifiez un sujet et un destinataire par exemple:

Send-MailMessage -smtpServer smtp.doe.com -from '[email protected]' ` 
       -to '[email protected]' -subject 'Testing' -attachment foo.txt 

Je ne sais pas comment cela joue avec les fichiers .msg mais vous pourriez essayer.

3

Nous avons eu un problème qui nécessitait que l'email soit transféré depuis Outlook, il y avait 3000 ~ emails à faire.

La réponse que m'a donnée Iain m'a conduit sur la voie du succès, alors merci.

Cependant, cela n'a pas fonctionné pour moi comme donné, il a échoué. J'ai remarqué que vous devez enregistrer la méthode de transfert vers une variable, puis exécuter le code à partir de cela, ci-dessous est mon script complet pour boucler chaque fichier msg dans un dossier et le transmettre à une personne. J'ai aussi laissé le sujet tel quel et je n'ai pas donné de corps car cela n'était pas nécessaire.

#Open Outlook and get a list of emails to forward 
$Outlook = New-Object -comObject Outlook.Application 
$Emails = Get-ChildItem -Path C:\Users\APerson\Documents -Filter *.msg 

#Loop through each email and open it up 
Foreach($Email IN $Emails){ 
    $Message = $Outlook.Session.OpenSharedItem($($Email.FullName)) 
    $Forward = $Message.Forward() 
    $Forward.Recipients.Add('[email protected]') 
    $Forward.Send() 

    #Sleep is optional :D 
    Start-Sleep -Seconds 1 
} 

#Close Outlook 
$Outlook.Quit() 

également remarqué si vous avez une politique de sécurité appliquée à Outlook qui vous empêche de lancer ce script, par exemple, il va supprimer le bouton Ajouter() sur les bénéficiaires, il suffit d'importer ces paramètres de Registre (peut être enregistré en tant que fichier reg):

Windows Registry Editor Version 5.00 

[HKEY_CURRENT_USER\Software\Policies\Microsoft\office\14.0\outlook\security] 
"PromptOOMSend"=dword:00000002 
"PromptOOMAddressBookAccess"=dword:00000002 
"PromptOOMAddressInformationAccess"=dword:00000002 
"PromptOOMMeetingTaskRequestResponse"=dword:00000002 
"PromptOOMSaveAs"=dword:00000002 
"PromptOOMFormulaAccess"=dword:00000002 
"PromptSimpleMAPISend"=dword:00000002 
"PromptSimpleMAPINameResolve"=dword:00000002 
"PromptSimpleMAPIOpenMessage"=dword:00000002 
+0

Cela a fonctionné très bien! J'utilise Outlook 2013, et je devais juste changer le chemin du registre vers: HKEY_CURRENT_USER \ Software \ Policies \ Microsoft \ office \ 15.0 \ outlook \ security –

Questions connexes