Attenzione ad usare la mail come Logger

Spesso si utilizza la mail come Log per tutti quegli errori di cui si ha l’esigenza di avere una notifica nell’immediato; un esempio potrebbe riguardare tutte le eccezioni che impediscono l’utilizzo dell’applicazione da parte degli utenti.

Anche se può sembrare un’operazione piuttosto semplice quella di inviare un’eccezione via mail, bisogna ugualmente prestare attenzione in tutti quei casi in cui si utilizza la proprietà Message dell’eccezione come Subject della mail; lo script seguente chiarisce la situazione.

MailMessage message = new MailMessage();
message.Subject = exc.Message;
...

Un approccio di questo tipo vi può portare incontro ad un’eccezione come la seguente:

ArgumentException: The specified string is not in the form required for a subject

Il problema è dovuto al fatto che il contenuto della proprietà Message può contente una nuova linea, quindi “\r\n”, che genera un errore nel metodo Send come spiegato qui.

La soluzione consiste nell’effettuare il replace delle stringhe non consentite con uno spazio vuoto, come mostrato di seguito:

MailMessage message = new MailMessage();
message.Subject = exc.Message.Replace("\r", " ").Replace("\n", " ");
...

Ciauz


Comments