martes, 17 de mayo de 2011

Correo entrante en Sharepoint sin SMTP - Parte 2.

Saludos a todos .
Viendo la solución me han surgido dudas con respecto al tema de reflejar la fecha en los correos entrantes.
Sharepoint cuando recoje los correos de la carpeta de correo entrante utiliza el Subject para dar el nombre a la entrada en la biblioteca, ignorando el nombre del fichero y marcando como fecha y hora la que tiene en el momento de la recogida, no la original del envio.

Si queremos reflejar de alguna manera este dato, podemos añadirlo al comienzo del nombre con esta modificación del Script Original.



Set-ExecutionPolicy RemoteSigned -force
import-module messageops-exchange
$path = "c:\CARPETA TEMPORAL"
$path2= "C:\CARPETA DONDE SHAREPOINT RECOGE CORREO"
$apppath="C:\CARPETA DONDE INSTALAS TODO"
cd $apppath
$Inbox="\\bandeja de entrada"
import-module ./messageops-exchange.psd1
$user = "TUDIRECCION@TUEMPRESA.COM"
$ewsProfile = New-MessageOps.EWSProfile -usedefaultcredentials 1 -id $user/*captura usuario actual*/
$ItemCollection = Get-MessageOps.Messages -p $ewsprofile -fp $inbox  -messagecount 1 -fulldetails $true
/*recoge  un correo*/
if ($itemcollection.sender.address -ne $null)
{
if ($itemcollection.subject -eq $null) /*si no tiene asunto se le añade como título “Sin Asunto”*/
{$name = "Sin Asunto"}
else
{$name = $itemcollection.subject -replace(':',' ') }/* Eliminamos caracteres especiales que puedan provocar error en el asunto error*/
$name = $name -replace("`""," ")
$name = $name.replace("\"," ")
$name = $name.replace('+',' ')
$name = $name.replace('*',' ')
$name = $name.replace('?',' ')
$name = $name.replace('=',' ')
$name = $name.replace('-',' ')
$name = $name.replace('[',' ') 
$name = $name.replace(']',' ')
$name = $name.replace('''',' ')
$sender = "x-sender: " + $itemcollection.sender.address /* añadimos cabeceras para SharePoint*/
$receiver = "x-receiver: " + $itemcollection.receivedby.address/* añadimos cabezeras para SharePoint*/
$file =$path + $name + ".eml" /*Construimos el nombre del fichero con el asunto*/
Export-MessageOps.MessageToEml -EWSProfile $ewsprofile -ewsid $itemcollection.id  -filename $file
add-content ($path +"temp.eml") $sender
add-content ($path + "temp.eml") $receiver
$texto =  get-content $file
add-content ($path + "temp.eml")  $texto
del $file /* borramos el fichero si existe  en la carpeta de destino*/
$temp = Get-Content ($path +"temp.eml")  | Foreach-Object { $_ -replace ("Subject:", ("Subject: " + $date + " ")) }  /* buscamos la cadena de texto Subject y le añadimos la fecha original*/
add-content $file $temp /*salvamos el fichero en el destino final*/
del ($path + "temp.eml")  /*Borramos el fichero temporal*/
Remove-MessageOps.Message -ewsid $itemcollection.id -ewsprofile $ewsprofile /*borramos el correo del buzón.*/
}
Como siempre se dice en estos casos, esto es un ejemplo, no lo uséis en producción, probarlo y reprobarlo antes de hacer uso de él.

Saludos a todos.

No hay comentarios:

Publicar un comentario