Una richiesta tipica relativa all'amministrazione di un server è quella di ricevere una mail quando una certa procedura è terminata, cosi da poter verificare
- se la procedura è effettivamente stata eseguita
- se è stata eseguita correttamente
Il problema che si pone, però è che la mail inviata potrebbe perdersi tra le altre numerose e-mail che - ahimè - intasano le caselle postale di ognuno. Un modo per notare queste e-mai è quello di farsi dei filtri, in outlook, che ci fanno apparire la ben nota finestrella posta in basso a destra dello schermo che ci avvisa dell'arrivo della stessa.
Dobbiamo però farli questi filtri.
E se non possiamo farli, magari perchè la mail non è diretta a noi ma ad un'altra persona, oppure semplicemente non vogliamo creare un ulteriore filtro? Beh, la soluzione sta nel far credere ad Outlook che il messaggio sia un "Alert" e non un messaggio qualsiasi. Un articolo molto dettagliato lo si trova qui:
http://msdn.microsoft.com/en-us/library/aa219030(office.11).aspx
Per chi non volesse leggerselo tutto, il succo è il seguente: nell'header del messaggio dovete impostare il valore del message-id a 3BD50098E401463AA228377848493927-XXX dove XXX è un numero a scelta.
Usando .NET (attraverso C#, VB o PowerShell come nell'esempio) ed utilizzando l'oggeto MailMessage, in pratica, il "trucco" si traduce cosi:
$SmtpClient = new-object System.Net.Mail.SmtpClient
$SmtpClient.Host = "mail.server.com"
$MailMessage = New-Object System.Net.Mail.MailMessage
$MailMessage.From = "auto@acme.com"
$MailMessage.To.Add("it@acme.com")
$MailMessage.Subject = "Oggetto del messaggio"
$MailMessage.Body = "Corpo del messaggio"
$MailMessage.Headers.Add("message-id", "<3BD50098E401463AA228377848493927-1>")
$SmtpClient.Send($MailMessage)
Io l'ho provato su Outlook 2007 e funziona che è una meraviglia!
Non essendo un esperto di Outlook se qualcuno ha qualche nota aggiuntiva è ovviamente - e come sempre - il benvenuto!