The Dark Side of .NET Programming

Il blog di Michele Aponte
posts - 211, comments - 145, trackbacks - 16

Mandare una mail ad una cartella con Asp.Net

Come molti sanno mandare una mail con asp.net è un’operazione abbastanza semplice, basta aggiungere al web.config:

<system.net>
    <mailSettings>
        <smtp from="test@foo.com">
            <network host="smtpserver1" port="25" userName="username" password="secret" />
        </smtp>
    </mailSettings>
</system.net>

Mentre nel codice basta scrivere:

   1:  MailMessage message = new MailMessage();
   2:  message.From = new MailAddress("sender@foo.bar.com");
   3:   
   4:  message.To.Add(new MailAddress("recipient1@foo.bar.com"));
   5:  message.To.Add(new MailAddress("recipient2@foo.bar.com"));
   6:  message.To.Add(new MailAddress("recipient3@foo.bar.com"));
   7:   
   8:  message.CC.Add(new MailAddress("carboncopy@foo.bar.com"));
   9:  message.Subject = "This is my subject";
  10:  message.Body = "This is the content";
  11:   
  12:  SmtpClient client = new SmtpClient();
  13:  client.Send(message);

Durante lo sviluppo potrebbe essere comodo evitare l’invio vero della mail ma avere comunque un modo per verificare che il contenuto inviato coincida con quanto sperato. Per fare questo è possibile aggiungere un attributo all’elemento smtp perchè l’invio avvenga verso una cartella specificata:

image

Scegliendo come valore SpecifiedPickupDirectory e aggiungendo le informazioni sulla directory da utilizzare il sistema creerà un file .eml con il contenuto della mail:

<system.net>
  <mailSettings>
    <smtp from="test@foo.com" deliveryMethod="SpecifiedPickupDirectory">
      <specifiedPickupDirectory pickupDirectoryLocation="d:\mails" />
    </smtp>
  </mailSettings>
</system.net>

Le ragioni per utilizzare questa possibilità possono essere davvero tante:

  • Testare l’invio massimo di email
  • Verificare eventuali errori portando temporaneamente l’invio delle mail in un cartella per un sito in produzione
  • Durante lo sviluppo per evitare le attese tipiche dell’invio e della ricezione delle mail
  • Decidere di far processare l’invio delle mail nella cartella da un servizio separato

Naturalmente possiamo anche impostare il tutto da codice se volessimo ad esempio condizionare sotto if quale delivery method usare: basta impostare la proprietà DeliveryMethod dell’oggetto SmtpClient:

image

Print | posted on Tuesday, July 20, 2010 9:35 PM |

Feedback

Gravatar

# re: Mandare una mail ad una cartella con Asp.Net

Decisamente interessante.
7/21/2010 12:43 AM | Mario Duzioni

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 2 and 3 and type the answer here:

Powered by:
Powered By Subtext Powered By ASP.NET