public void ProcessOrder(Cart cart, ShippingDetails shippingDetails) { using (var smtp = new SmtpClient()) { smtp.EnableSsl = this.emailSettings.UseSsl; smtp.Host = this.emailSettings.ServerName; smtp.Port = this.emailSettings.ServerPort; smtp.UseDefaultCredentials = false; smtp.Credentials = new NetworkCredential(this.emailSettings.Username, this.emailSettings.Password); if (this.emailSettings.WriteAsFile) { smtp.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory; smtp.PickupDirectoryLocation = this.emailSettings.FileLocation; smtp.EnableSsl = false; } var body = new StringBuilder() .AppendLine("A new order has been submited") .AppendLine("---") .AppendLine("Items:"); foreach (var item in cart.Lines) { body.AppendFormat("{0} x {1}, unitary price: {2:c} (subtotal: {3:c})", item.Product.Name, item.Product.Price, item.Quantity, item.Product.Price * item.Quantity); } body.AppendFormat("Total order value {0:c}", cart.ComputeTotalCost()) .AppendLine("---") .AppendLine("Ship to:") .AppendLine(shippingDetails.Name) .AppendLine(shippingDetails.Line1) .AppendLine(shippingDetails.Line2 ?? string.Empty) .AppendLine(shippingDetails.Line3 ?? string.Empty) .AppendLine(shippingDetails.City) .AppendLine(shippingDetails.State ?? string.Empty) .AppendLine(shippingDetails.Country) .AppendLine(shippingDetails.Zip ?? string.Empty) .AppendLine("---") .AppendFormat("Gift wrap: {0}", shippingDetails.Wrap ? "yes" : "no"); var mailMessage = new MailMessage(this.emailSettings.MailFromAddress, this.emailSettings.MailToAddress, "New order submitted!", body.ToString()); if (this.emailSettings.WriteAsFile) { mailMessage.BodyEncoding = Encoding.ASCII; } smtp.Send(mailMessage); } }