2015-06-15 9 views
5

PowerShell Script [script1.ps1] -:Jak ograniczyć przycisk do głosowania na „Do” adres i nie wysyłać do „CC” w programie Outlook za pomocą PowerShell?

param(
[string]$username, 
[string]$username1, 
) 

$Outlook = New-Object -ComObject Outlook.Application 
$Mail = $Outlook.CreateItem(0) 

$Mail.To = "$username1" 
$Mail.Cc = "$username" 
$Mail.Subject = "SUBJECT" 
$Mail.Body = "--content--" 


$mail.VotingOptions = "Approve;Reject" 

$Mail.Send() 

kod PHP -:

<?php 
    $connection = oci_connect("username","password","db_name"); 
    $lname = $_SESSION['lead_name']; 
    $main_query=oci_parse($connection,"SELECT * FROM TABLE WHERE FIELD= '$lname'"); 
    oci_execute($main_query,OCI_DEFAULT); 
    while($res = oci_fetch_array($main_query)) 
     { 
     $mail= $res['USERNAME'];   
     } 
     $_SESSION['mail_id']=$mail; 
     $cc = $_SESSION['mail']; 

     $username = $cc; 
     $username1 = $_SESSION['mail_id']; 

    $psScriptPath = "C:\\xampp\\htdocs\\Website_LMS\\Powershell\\script1.ps1"; 
    $query = shell_exec("powershell -command $psScriptPath -username '$username'< NUL -username1 '$username1'< NUL"); 
     oci_close($connection); 
    ?> 

PowerShell Skrypt służy do wysyłania wiadomości e-mail w programie Outlook. Wszystkie te parametry nazwa użytkownika, USERNAME1 są wysyłane ze skryptu php za pomocą polecenia powłoki exec. Te dwa to adres e-mail.

Teraz chcę użyć przycisku do głosowania, aby zaakceptować lub odrzucić urlopu, który jest uruchamiany na adresy e-mail menetioned. Chcę, aby przycisk głosowania był wysyłany tylko do nazwy użytkownika1, tj. Adresu "Do", a nie "cc". Chcę to zrealizować za pomocą programu powershell.

+1

O ile wiem, że nie mogę tego zrobić bezpośrednio, choć sama Outlook. Jak myślisz, dlaczego skorupa manipulująca Outlookiem miałaby taką możliwość? – TheMadTechnician

+1

@TheMadTechnician - Nie jestem pewien, czy to możliwe. Próbowałem dostosować e-mail za pomocą skryptu PowerShell, który pozwala mi dokonać pewnych modyfikacji, ale gdy muszę zrobić coś podobnego do tego, o którym wspomniałem w tym zapytaniu, nie jestem pewien, czy jest to możliwe, czy nie. Co więcej, jeśli nie jest to możliwe przez powershell, czy istnieje jakaś inna metoda? –

+1

Najprostszym rozwiązaniem byłoby wysłanie 2 wiadomości e-mail, jednej z opcjami głosowania i jednej bez. Może to jednak nie odpowiadać Twojej konkretnej potrzebie/sytuacji. – sodawillow

Odpowiedz

2

Ponieważ przyciski głosowania (= informacje o tym, co głosować) są częścią wiadomości, podobnie jak tekst i temat, nie można po prostu uczynić ich widocznymi dla niektórych odbiorców. Outlook (lub lepiej serwer, najprawdopodobniej Exchange) wyśle ​​ten sam e-mail do wszystkich odbiorców, niezależnie od tego, czy są adresowani przez: To, Cc lub Bcc.

To przez projekt, zgodnie RFC2822 (Internet Message Format):

Pola przeznaczenia określić odbiorców wiadomości. Każde pole docelowy może mieć jeden lub więcej adresów, a każdy z adresów wskazać adresatów wiadomości. Jedynym różnica między trzema polami jest jak każdy jest używany.

można po prostu wysłać dwa maile z tej samej treści, z wyjątkiem przycisków:

param(
[string]$username, 
[string]$username1, 
) 

$Outlook = New-Object -ComObject Outlook.Application 
$Mail1 = $Outlook.CreateItem(0) 
$Mail2 = $Outlook.CreateItem(0) 

$Mail1.To = "$username1" 
$Mail2.To = "$username" 
$Mail1.Subject = "SUBJECT" 
$Mail1.Body = "--content--" 
$Mail2.Subject = "SUBJECT" 
$Mail2.Body = "--content--" 


$mail1.VotingOptions = "Approve;Reject" 

$Mail1.Send() 
$Mail2.Send() 

Aby wyczyścić rzeczy dla odbiorców, można dodać tekst do maili, stwierdzając, że to poczta jest również wysyłana pod numer $username.

Powiązane problemy