zoukankan      html  css  js  c++  java
  • 一个关于发邮件的类,可以模拟发送对smtp服务器或者是本地文件夹

     1 namespace SportsStore.Domain.Concrete {
     2 
     3     public class EmailSettings {
     4         public string MailToAddress = "orders@example.com";
     5         public string MailFromAddress = "sportsstore@example.com";
     6         public bool UseSsl = true;
     7         public string Username = "MySmtpUsername";//MailToAddress一样
     8         public string Password = "MySmtpPassword";
     9         public string ServerName = "smtp.example.com";
    10         public int ServerPort = 587;//Gmail为587,其他一般为25 
    11         public bool WriteAsFile = false;//设为false邮件将发送到路径FileLoacation
    12         public string FileLocation = @"c:sports_store_emails";
    13     }
    14 
    15     public class EmailOrderProcessor :IOrderProcessor {
    16         private EmailSettings emailSettings;
    17 
    18         public EmailOrderProcessor(EmailSettings settings) {
    19             emailSettings = settings;
    20         }
    21 
    22         public void ProcessOrder(Cart cart, ShippingDetails shippingInfo) {
    23 
    24             using (var smtpClient = new SmtpClient()) {
    25 
    26                 smtpClient.EnableSsl = emailSettings.UseSsl;
    27                 smtpClient.Host = emailSettings.ServerName;
    28                 smtpClient.Port = emailSettings.ServerPort;
    29                 smtpClient.UseDefaultCredentials = false;
    30                 smtpClient.Credentials 
    31                     = new NetworkCredential(emailSettings.Username, emailSettings.Password);
    32                 if (emailSettings.WriteAsFile) {
    33                     smtpClient.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
    34                     smtpClient.PickupDirectoryLocation = emailSettings.FileLocation;
    35                     smtpClient.EnableSsl = false;
    36                 }
    37 
    38                 StringBuilder body = new StringBuilder()
    39                 .AppendLine("A new order has been submitted")
    40                 .AppendLine("---")
    41                 .AppendLine("Items:");
    42 
    43                 foreach (var line in cart.Lines) {
    44                     var subtotal = line.Product.Price * line.Quantity;
    45                     body.AppendFormat("{0} x {1} (subtotal: {2:c}", line.Quantity,
    46                                       line.Product.Name,
    47                                       subtotal);
    48                 }
    49                 body.AppendFormat("Total order value: {0:c}", cart.ComputeTotalValue())
    50                 .AppendLine("---")
    51                 .AppendLine("Ship to:")
    52                 .AppendLine(shippingInfo.Name)
    53                 .AppendLine(shippingInfo.Line1)
    54                 .AppendLine(shippingInfo.Line2 ?? "")
    55                 .AppendLine(shippingInfo.Line3 ?? "")
    56                 .AppendLine(shippingInfo.City)
    57                 .AppendLine(shippingInfo.State ?? "")
    58                 .AppendLine(shippingInfo.Country)
    59                 .AppendLine(shippingInfo.Zip)
    60                 .AppendLine("---")
    61                 .AppendFormat("Gift wrap: {0}", shippingInfo.GiftWrap ? "Yes" : "No");
    62 
    63                 MailMessage mailMessage = new MailMessage(
    64                                        emailSettings.MailFromAddress,   // From
    65                                        emailSettings.MailToAddress,     // To
    66                                        "New order submitted!",          // Subject
    67                                        body.ToString());                // Body
    68 
    69                 if (emailSettings.WriteAsFile) {
    70                     mailMessage.BodyEncoding = Encoding.ASCII;
    71                 }
    72 
    73                 smtpClient.Send(mailMessage);
    74             }
    75         }
    76     }
    77 }
    View Code
  • 相关阅读:
    setuptools使用
    YOLO解读
    Linux下配置Python的独立虚拟环境
    交叉熵(Cross Entropy)
    OpenCV-C++ Canny算法介绍
    OpenCV-C++ Laplance算子
    【模型部署】TF Serving 的使用
    OpenCV-C++ Sobel算子使用
    OpenCV-C++ 图像卷积计算的边缘问题
    OpenCV-C++ 自定义线性滤波
  • 原文地址:https://www.cnblogs.com/YEKEYISHUO/p/3427393.html
Copyright © 2011-2022 走看看