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 = ;//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. }

一个关于发邮件的类,可以模拟发送对smtp服务器或者是本地文件夹的更多相关文章

  1. outlook邮箱邮件与企业邮箱同步(outlook本地文件夹邮件,web邮箱里没有)

    用惯了outlook2010, 问题:今天将邮件放到自定义文件夹后,发现在web邮箱中看不到邮件了.不能同步到企业邮箱. 解决忙了一天,才知道是账户类型问题,pop3类型,只下载不上传.所以outlo ...

  2. iOS-打电话、发短信、发邮件【指定QQ用户发送QQ消息】

    1.发短信 头文件 #import <MessageUI/MessageUI.h> 头部代理 @interface ViewController ()<MFMessageCompos ...

  3. [golang]使用gomail发邮件(在Go中发送电子邮件的最佳方式)

    1 前言 定义邮箱服务器连接信息,如果是网易邮箱 pass填密码,qq邮箱填授权码(客户端专用密码). gomail包: go get gopkg.in/gomail.v2 更多功能可以参考 http ...

  4. Linux搭建smtp服务器+laravel5.2发邮件配置

    /** * 这里主要是想通过自己搭建smtp服务器,配置laravel5.2框架,实现邮箱发邮件功能, * 主要内容是搭建smtp服务器,laravel5.2发邮件顺手提一下 */ /** * 1.l ...

  5. Android进阶(十)Android 发邮件

    最近在做的APP涉及到发邮件,总结如下: 在android里进行邮件客户端开发可以有两种方式: 在邮件客户端的设计中,可以采用两种方法. 一种是调用android系统自带的邮件服务 优点:这种方法比较 ...

  6. 带着新人学springboot的应用10(springboot+定时任务+发邮件)

    接上一节,环境一样,这次来说另外两个任务,一个是定时任务,一个是发邮件. 1.定时任务 定时任务可以设置精确到秒的准确时间去自动执行方法. 我要一个程序每一秒钟说一句:java小新人最帅 于是,我就写 ...

  7. testng优化:失败重跑,extentReport+appium用例失败截图,测试报告发邮件

    生成的单html方便jenkins集成发邮件,= = 构建失败发邮件 参考:https://blog.csdn.net/galen2016/article/details/77975965 步骤: 1 ...

  8. 如何用python发邮件

    python发送各类邮件的主要方法 一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍:     1.smtplib模块 smtplib.SM ...

  9. 关于使用Java Mail发邮件的问题

    今天做东西的时候突然遇到需要发邮件的问题,然后就使用SMTP协议进行邮件的发送.用了一个工具类简化邮件发送的功能, 在这次试验中,我使用了自己的QQ邮箱进行发送邮件的发送者. public class ...

随机推荐

  1. openstack(liberty):部署实验平台(二,简单版本软件安装 part2)

    继续前面的part1,将后续的compute以及network部分的安装过程记录完毕! 首先说说compute部分nova的安装. n1.准备工作.创建数据库,配置权限!(密码依旧是openstack ...

  2. [Hibernate] - Load and Get

    Hibernate中使用session的load(...)和get(...)区别: 1.load()方法是在返回的类被后期调用时,才会去提交SQL查询数据库. 2.get()方法是在调用get()时就 ...

  3. 基于SpringMVC下的Rest服务框架搭建【1、集成Swagger】

    基于SpringMVC下的Rest服务框架搭建[1.集成Swagger] 1.需求背景 SpringMVC本身就可以开发出基于rest风格的服务,通过简单的配置,即可快速开发出一个可供客户端调用的re ...

  4. MIT牛人解说数学体系(转载)

    原文网址:http://www.guokr.com/post/442622/ 在过去的一年中,我一直在数学的海洋中游荡,research进展不多,对于数学世界的阅历算是有了一些长进. 为什么要深入数学 ...

  5. MSSQL update 多表关联更新

    update tMeter set 字段= t.源自段 from ( select * from 源表信息 ) t where 关联条件 实际demo: UPDATE dbo.WX_TWODIMENC ...

  6. NOR Flash擦写和原理分析 (一)

    1. NOR FLASH 的简单介绍 NOR FLASH 是很常见的一种存储芯片,数据掉电不会丢失.NOR FLASH支持Execute On Chip,即程序可以直接在FLASH片内执行(这意味着存 ...

  7. Tomcat服务器搭建

    一.JDK环境搭建 二.tomcat下载安装 三.tomcat服务启动 cmd> net start  tomcat8 四.查看tomcat服务器启动情况: http://localhost:8 ...

  8. activiti自定义流程之自定义表单(一):环境配置

    先补充说一下自定义流程整个的思路,自定义流程的目的就是为了让一套代码解决多种业务流程,比如请假单.报销单.采购单.协作单等等,用户自己来设计流程图. 这里要涉及到这样几个基本问题,一是不同的业务需求, ...

  9. [技巧]实际项目中background-image应写在页面上

    摘自:http://www.zhangxinxu.com 因为实际项目中(数据对接时),这肯定是个动态的URL地址,css文件似乎不支持动态URL 地址. <img src="../i ...

  10. BIP_开发案例07_将原有Report Builer报表全部转为XML Publisher形式(案例)

    2014-05-31 Created By BaoXinjian