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