2015-06-15 20 views
5

PowerShell script [script1.ps1] -:Come limitare il pulsante di votazione a "A" indirizzo e non inviare a "Cc" in Outlook tramite 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() 

codice 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 script viene utilizzato per inviare e-mail a Outlook. Tutti questi parametri nome utente, nome utente1 vengono inviati dallo script php tramite il comando shell exec. Questi due sono l'indirizzo email.

Ora voglio utilizzare il pulsante di voto per approvare o rifiutare un congedo che viene attivato per gli indirizzi e-mail menzionate. Voglio che il pulsante di voto sia inviato a username1 solo per gli indirizzi "a" e non a "cc". Voglio implementarlo tramite PowerShell.

+1

Per quanto ne so, non è possibile farlo direttamente tramite Outlook stesso. Perché pensi che una shell che manipola Outlook abbia quell'abilità? – TheMadTechnician

+1

@ TheMadTechnician - Non sono sicuro se sia possibile. Ho provato a personalizzare l'e-mail tramite uno script PowerShell e mi consente di apportare alcune modifiche, ma dovendo fare qualcosa come quello che ho citato nella query qui, non sono sicuro se sia possibile o meno. Inoltre, se non è possibile tramite PowerShell, esiste un altro metodo per farlo? –

+1

La soluzione più semplice sarebbe quella di inviare 2 mail, una con le opzioni di voto e una senza. Ma questo potrebbe non adattarsi al tuo particolare bisogno/situazione. – sodawillow

risposta

2

Poiché i pulsanti di votazione (= le informazioni su cosa votare) fanno parte della posta, come il testo e l'oggetto, non è possibile renderli visibili solo ad alcuni dei destinatari. Outlook (o meglio, il server, molto probabilmente Exchange) invierà la stessa email a tutti i destinatari, indipendentemente dal fatto che siano indirizzati tramite To, Cc o Bcc.

Questo è in base alla progettazione, come indicato nel RFC2822 (Internet Message Format):

I campi di destinazione specificano i destinatari del messaggio. Ciascun campo di destinazione può avere uno o più indirizzi e ciascuno degli indirizzi indica i destinatari previsti del messaggio. L'unica differenza tra i tre campi è come ognuno di essi viene utilizzato.

Si può semplicemente inviare due mail con lo stesso contenuto, fatta eccezione per i tasti:

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() 

Per chiarire le cose per i destinatari, si potrebbe aggiungere un testo alle mail, affermando che questo la posta viene inviata anche a $username.