C#发送邮件三种方法,Localhost,SMTP,SSL-SMTP 
通过.Net FrameWork 2.0下提供的“System.Net.Mail”可以轻松的实现,本文列举了3种途径来发送:

1.通过Localhost; 
2.通过普通SMTP; 
3.通过SSL的SMTP;

下面一个一个来说:

1.通过LocalHost

  1. public void SendMailLocalhost()
  2. {
  3. System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
  4. msg.To.Add("a@a.com");
  5. msg.To.Add("b@b.com");
  6. /* msg.To.Add("b@b.com");
  7. * msg.To.Add("b@b.com");
  8. * msg.To.Add("b@b.com");可以发送给多人
  9. */
  10. msg.CC.Add(c@c.com);
  11. /*
  12. * msg.CC.Add("c@c.com");
  13. * msg.CC.Add("c@c.com");可以抄送给多人
  14. */
  15. msg.From = new MailAddress("a@a.com", "AlphaWu", System.Text.Encoding.UTF8);
  16. /* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/
  17. msg.Subject = "这是测试邮件";//邮件标题
  18. msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
  19. msg.Body = "邮件内容";//邮件内容
  20. msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
  21. msg.IsBodyHtml = false;//是否是HTML邮件
  22. msg.Priority = MailPriority.High;//邮件优先级
  23. SmtpClient client = new SmtpClient();
  24. client.Host = "localhost";
  25. object userState = msg;
  26. try
  27. {
  28. client.SendAsync(msg, userState);
  29. //简单一点儿可以client.Send(msg);
  30. MessageBox.Show("发送成功");
  31. }
  32. catch (System.Net.Mail.SmtpException ex)
  33. {
  34. MessageBox.Show(ex.Message, "发送邮件出错");
  35. }
  36. }
  1. public void SendMailLocalhost()
  2. {
  3. System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
  4. msg.To.Add("a@a.com");
  5. msg.To.Add("b@b.com");
  6. /* msg.To.Add("b@b.com");
  7. * msg.To.Add("b@b.com");
  8. * msg.To.Add("b@b.com");可以发送给多人
  9. */
  10. msg.CC.Add(c@c.com);
  11. /*
  12. * msg.CC.Add("c@c.com");
  13. * msg.CC.Add("c@c.com");可以抄送给多人
  14. */
  15. msg.From = new MailAddress("a@a.com", "AlphaWu", System.Text.Encoding.UTF8);
  16. /* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/
  17. msg.Subject = "这是测试邮件";//邮件标题
  18. msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
  19. msg.Body = "邮件内容";//邮件内容
  20. msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
  21. msg.IsBodyHtml = false;//是否是HTML邮件
  22. msg.Priority = MailPriority.High;//邮件优先级
  23. SmtpClient client = new SmtpClient();
  24. client.Host = "localhost";
  25. object userState = msg;
  26. try
  27. {
  28. client.SendAsync(msg, userState);
  29. //简单一点儿可以client.Send(msg);
  30. MessageBox.Show("发送成功");
  31. }
  32. catch (System.Net.Mail.SmtpException ex)
  33. {
  34. MessageBox.Show(ex.Message, "发送邮件出错");
  35. }
  36. }
  1. public void SendMailLocalhost()
  2. {
  3. System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
  4. msg.To.Add("a@a.com");
  5. msg.To.Add("b@b.com");
  6. /* msg.To.Add("b@b.com");
  7. * msg.To.Add("b@b.com");
  8. * msg.To.Add("b@b.com");可以发送给多人
  9. */
  10. msg.CC.Add(c@c.com);
  11. /*
  12. * msg.CC.Add("c@c.com");
  13. * msg.CC.Add("c@c.com");可以抄送给多人
  14. */
  15. msg.From = new MailAddress("a@a.com", "AlphaWu", System.Text.Encoding.UTF8);
  16. /* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/
  17. msg.Subject = "这是测试邮件";//邮件标题
  18. msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
  19. msg.Body = "邮件内容";//邮件内容
  20. msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
  21. msg.IsBodyHtml = false;//是否是HTML邮件
  22. msg.Priority = MailPriority.High;//邮件优先级
  23. SmtpClient client = new SmtpClient();
  24. client.Host = "localhost";
  25. object userState = msg;
  26. try
  27. {
  28. client.SendAsync(msg, userState);
  29. //简单一点儿可以client.Send(msg);
  30. MessageBox.Show("发送成功");
  31. }
  32. catch (System.Net.Mail.SmtpException ex)
  33. {
  34. MessageBox.Show(ex.Message, "发送邮件出错");
  35. }
  36. }

2.通过普通SMTP

  1. public void SendMailUseZj()
  2. {
  3. System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
  4. msg.To.Add(a@a.com);
  5. msg.To.Add(b@b.com);
  6. /*
  7. * msg.To.Add("b@b.com");
  8. * msg.To.Add("b@b.com");
  9. * msg.To.Add("b@b.com");可以发送给多人
  10. */
  11. msg.CC.Add("c@c.com");
  12. /*
  13. * msg.CC.Add("c@c.com");
  14. * msg.CC.Add("c@c.com");可以抄送给多人
  15. */
  16. msg.From = new MailAddress("a@a.com", "AlphaWu", System.Text.Encoding.UTF8);
  17. /* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/
  18. msg.Subject = "这是测试邮件";//邮件标题
  19. msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
  20. msg.Body = "邮件内容";//邮件内容
  21. msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
  22. msg.IsBodyHtml = false;//是否是HTML邮件
  23. msg.Priority = MailPriority.High;//邮件优先级
  24. SmtpClient client = new SmtpClient();
  25. client.Credentials = new System.Net.NetworkCredential("username@zj.com", "userpass");
  26. //在zj.com注册的邮箱和密码
  27. client.Host = "smtp.zj.com";
  28. object userState = msg;
  29. try
  30. {
  31. client.SendAsync(msg, userState);
  32. //简单一点儿可以client.Send(msg);
  33. MessageBox.Show("发送成功");
  34. }
  35. catch (System.Net.Mail.SmtpException ex)
  36. {
  37. MessageBox.Show(ex.Message, "发送邮件出错");
  38. }
  39. }
  1. public void SendMailUseZj()
  2. {
  3. System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
  4. msg.To.Add(a@a.com);
  5. msg.To.Add(b@b.com);
  6. /*
  7. * msg.To.Add("b@b.com");
  8. * msg.To.Add("b@b.com");
  9. * msg.To.Add("b@b.com");可以发送给多人
  10. */
  11. msg.CC.Add("c@c.com");
  12. /*
  13. * msg.CC.Add("c@c.com");
  14. * msg.CC.Add("c@c.com");可以抄送给多人
  15. */
  16. msg.From = new MailAddress("a@a.com", "AlphaWu", System.Text.Encoding.UTF8);
  17. /* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/
  18. msg.Subject = "这是测试邮件";//邮件标题
  19. msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
  20. msg.Body = "邮件内容";//邮件内容
  21. msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
  22. msg.IsBodyHtml = false;//是否是HTML邮件
  23. msg.Priority = MailPriority.High;//邮件优先级
  24. SmtpClient client = new SmtpClient();
  25. client.Credentials = new System.Net.NetworkCredential("username@zj.com", "userpass");
  26. //在zj.com注册的邮箱和密码
  27. client.Host = "smtp.zj.com";
  28. object userState = msg;
  29. try
  30. {
  31. client.SendAsync(msg, userState);
  32. //简单一点儿可以client.Send(msg);
  33. MessageBox.Show("发送成功");
  34. }
  35. catch (System.Net.Mail.SmtpException ex)
  36. {
  37. MessageBox.Show(ex.Message, "发送邮件出错");
  38. }
  39. }
  1. public void SendMailUseZj()
  2. {
  3. System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
  4. msg.To.Add(a@a.com);
  5. msg.To.Add(b@b.com);
  6. /*
  7. * msg.To.Add("b@b.com");
  8. * msg.To.Add("b@b.com");
  9. * msg.To.Add("b@b.com");可以发送给多人
  10. */
  11. msg.CC.Add("c@c.com");
  12. /*
  13. * msg.CC.Add("c@c.com");
  14. * msg.CC.Add("c@c.com");可以抄送给多人
  15. */
  16. msg.From = new MailAddress("a@a.com", "AlphaWu", System.Text.Encoding.UTF8);
  17. /* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/
  18. msg.Subject = "这是测试邮件";//邮件标题
  19. msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
  20. msg.Body = "邮件内容";//邮件内容
  21. msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
  22. msg.IsBodyHtml = false;//是否是HTML邮件
  23. msg.Priority = MailPriority.High;//邮件优先级
  24. SmtpClient client = new SmtpClient();
  25. client.Credentials = new System.Net.NetworkCredential("username@zj.com", "userpass");
  26. //在zj.com注册的邮箱和密码
  27. client.Host = "smtp.zj.com";
  28. object userState = msg;
  29. try
  30. {
  31. client.SendAsync(msg, userState);
  32. //简单一点儿可以client.Send(msg);
  33. MessageBox.Show("发送成功");
  34. }
  35. catch (System.Net.Mail.SmtpException ex)
  36. {
  37. MessageBox.Show(ex.Message, "发送邮件出错");
  38. }
  39. }

上述方法不适用于所有SMTP,经测试zj.com可以,而smtp.163.com不行

3.通过SSL的SMTP

  1. public void SendMailUseGmail()
  2. {
  3. System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
  4. msg.To.Add(a@a.com);
  5. msg.To.Add(b@b.com);
  6. /*
  7. * msg.To.Add("b@b.com");
  8. * msg.To.Add("b@b.com");
  9. * msg.To.Add("b@b.com");可以发送给多人
  10. */
  11. msg.CC.Add(c@c.com);
  12. /*
  13. * msg.CC.Add("c@c.com");
  14. * msg.CC.Add("c@c.com");可以抄送给多人
  15. */
  16. msg.From = new MailAddress("a@a.com", "AlphaWu", System.Text.Encoding.UTF8);
  17. /* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/
  18. msg.Subject = "这是测试邮件";//邮件标题
  19. msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
  20. msg.Body = "邮件内容";//邮件内容
  21. msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
  22. msg.IsBodyHtml = false;//是否是HTML邮件
  23. msg.Priority = MailPriority.High;//邮件优先级
  24. SmtpClient client = new SmtpClient();
  25. client.Credentials = new System.Net.NetworkCredential("username@gmail.com", "password");
  26. //上述写你的GMail邮箱和密码
  27. client.Port = 587;//Gmail使用的端口
  28. client.Host = "smtp.gmail.com";
  29. client.EnableSsl = true;//经过ssl加密
  30. object userState = msg;
  31. try
  32. {
  33. client.SendAsync(msg, userState);
  34. //简单一点儿可以client.Send(msg);
  35. MessageBox.Show("发送成功");
  36. }
  37. catch (System.Net.Mail.SmtpException ex)
  38. {
  39. MessageBox.Show(ex.Message, "发送邮件出错");
  40. }
  41. }
  1. public void SendMailUseGmail()
  2. {
  3. System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
  4. msg.To.Add(a@a.com);
  5. msg.To.Add(b@b.com);
  6. /*
  7. * msg.To.Add("b@b.com");
  8. * msg.To.Add("b@b.com");
  9. * msg.To.Add("b@b.com");可以发送给多人
  10. */
  11. msg.CC.Add(c@c.com);
  12. /*
  13. * msg.CC.Add("c@c.com");
  14. * msg.CC.Add("c@c.com");可以抄送给多人
  15. */
  16. msg.From = new MailAddress("a@a.com", "AlphaWu", System.Text.Encoding.UTF8);
  17. /* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/
  18. msg.Subject = "这是测试邮件";//邮件标题
  19. msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
  20. msg.Body = "邮件内容";//邮件内容
  21. msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
  22. msg.IsBodyHtml = false;//是否是HTML邮件
  23. msg.Priority = MailPriority.High;//邮件优先级
  24. SmtpClient client = new SmtpClient();
  25. client.Credentials = new System.Net.NetworkCredential("username@gmail.com", "password");
  26. //上述写你的GMail邮箱和密码
  27. client.Port = 587;//Gmail使用的端口
  28. client.Host = "smtp.gmail.com";
  29. client.EnableSsl = true;//经过ssl加密
  30. object userState = msg;
  31. try
  32. {
  33. client.SendAsync(msg, userState);
  34. //简单一点儿可以client.Send(msg);
  35. MessageBox.Show("发送成功");
  36. }
  37. catch (System.Net.Mail.SmtpException ex)
  38. {
  39. MessageBox.Show(ex.Message, "发送邮件出错");
  40. }
  41. }
  1. public void SendMailUseGmail()
  2. {
  3. System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
  4. msg.To.Add(a@a.com);
  5. msg.To.Add(b@b.com);
  6. /*
  7. * msg.To.Add("b@b.com");
  8. * msg.To.Add("b@b.com");
  9. * msg.To.Add("b@b.com");可以发送给多人
  10. */
  11. msg.CC.Add(c@c.com);
  12. /*
  13. * msg.CC.Add("c@c.com");
  14. * msg.CC.Add("c@c.com");可以抄送给多人
  15. */
  16. msg.From = new MailAddress("a@a.com", "AlphaWu", System.Text.Encoding.UTF8);
  17. /* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/
  18. msg.Subject = "这是测试邮件";//邮件标题
  19. msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
  20. msg.Body = "邮件内容";//邮件内容
  21. msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
  22. msg.IsBodyHtml = false;//是否是HTML邮件
  23. msg.Priority = MailPriority.High;//邮件优先级
  24. SmtpClient client = new SmtpClient();
  25. client.Credentials = new System.Net.NetworkCredential("username@gmail.com", "password");
  26. //上述写你的GMail邮箱和密码
  27. client.Port = 587;//Gmail使用的端口
  28. client.Host = "smtp.gmail.com";
  29. client.EnableSsl = true;//经过ssl加密
  30. object userState = msg;
  31. try
  32. {
  33. client.SendAsync(msg, userState);
  34. //简单一点儿可以client.Send(msg);
  35. MessageBox.Show("发送成功");
  36. }
  37. catch (System.Net.Mail.SmtpException ex)
  38. {
  39. MessageBox.Show(ex.Message, "发送邮件出错");
  40. }
  41. }

通过Gmail来发送邮件,成功率极高,几乎都可以发到,推荐使用。

C#发送邮件三种方法,Localhost,SMTP,SSL-SMTP的更多相关文章

  1. C#发送邮件三种方法(Localhost,SMTP,SSL-SMTP)

    原文:C#发送邮件三种方法(Localhost,SMTP,SSL-SMTP) 最近公司由于一个R&I项目的需要,用户要求在购买产品或出货等一些环节,需要发送邮件提醒或者说每周一让系统自动采集数 ...

  2. .Net锦囊-C#,.Net发送邮件三种方法…

    最近公司由于一个R&I项目的需要,用户要求在购买产品或出货等一些环节,需要发送邮件提醒或者说每周一让系统自动采集数据发送一封E-mail,因此我也就找来相关资料,写了一个Demo分享给大家,大 ...

  3. C# | VS2019连接MySQL的三种方法以及使用MySQL数据库教程

    本文将介绍3种添加MySQL引用的方法,以及连接MySQL和使用MySQL的教程 前篇:Visual Studio 2019连接MySQL数据库详细教程 \[QAQ \] 第一种方法 下载 Mysql ...

  4. Docker MySql 查看版本的三种方法

    目录 Docker MySql 查看版本的三种方法 1.mysql -V命令查看版本 2.status命令查看版本 3.version命令查看版本 Docker MySql 查看版本的三种方法 1.m ...

  5. java解析xml的三种方法

    java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...

  6. [mysql]三种方法为root账户指定密码

    前言:前段时间把mysql安装后一直没管它,当时就在奇怪为什么mysql登陆不要密码,原来一直用的超用户账户登陆的(简称超级用户) 其实只怪自己太无知,之前一直用的phpbydamin进行的数据库的可 ...

  7. AJAX实现跨域的三种方法

    由于在工作中需要使用AJAX请求其他域名下的请求,但是会出现拒绝访问的情况,这是因为基于安全的考虑,AJAX只能访问本地的资源,而不能跨域访问. 比如说你的网站域名是aaa.com,想要通过AJAX请 ...

  8. Spring使用jdbcJdbcTemplate和三种方法配置数据源

    三种方法配置数据源 1.需要引入jar包:spring-jdbc-4.3.2.RELEASE.jar <!-- spring内置,springJdbc,配置数据源 --> <bean ...

  9. Asp.Net保存session的三种方法

    C#中保存Session的三种方法及Web.Config设置 1.保存session到sql server,需要指定Sql Server服务器,这种方法因为要读写数据库最慢 <sessionSt ...

随机推荐

  1. linux系统中SSH免密设置报错

    执行 ssh-add ~/.ssh/msi_rsa 时报下面错误 Could not open a connection to your authentication agent. 解决办法: 执行命 ...

  2. java Hibernate 用法

    Hibernate 用法总结: import java.io.Serializable; import java.sql.SQLException; import java.util.Collecti ...

  3. C#设计模式之10-外观模式

    外观模式(Facade Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/407 访问. 外观模式属于结构 ...

  4. 面试官:怎么做JDK8的垃圾收集器的调优?

    面试官:怎么做JDK8的垃圾收集器的调优? 看着面试官真诚的眼神,心中暗想看起来年纪轻轻却提出如此直击灵魂的问题.擦了擦额头上汗,我稍微调整了一下紧张的情绪,对面试官说: 在JDK8中有Serial收 ...

  5. 【Leetcode 做题学算法周刊】第八期

    首发于微信公众号<前端成长记>,写于 2020.05.07 背景 本文记录刷题过程中的整个思考过程,以供参考.主要内容涵盖: 题目分析设想 编写代码验证 查阅他人解法 思考总结 目录 15 ...

  6. centos7下安装docker与镜像加速

    1.背景 centos7下安装docker 2.安装 第一步:检查是否为centos7版本 第二步:依赖环境安装 执行如下两个命令: yum -y install gcc yum -y install ...

  7. error PRJ0003 : 生成“cmd.exe”时出错 2010-01-19 22:26

    今天用vs2005编译时代码时竟然出现了error PRJ0003 : 生成“cmd.exe”时出错这样的错误,这不是刺激我吗,我们先看msdn的解释吧. 错误消息 生成“command line”时 ...

  8. 在我们使用Redis作为一个LRU缓存的时候,怎么做才能更高效

    当用Redis作为一个LRU存储时,有些时候是比较方便的,在你增添新的数据时会自动驱逐旧的数据.这种行为在开发者论坛是非常有名的,因为这是流行的memcached系统的默认行为. LRU实际上只是支持 ...

  9. java程序CPU 100%调试

    前置 PID为进程id,NID为线程ID 步骤一.找到最耗CPU的进程 top 然后键入P,按CPU占用率排序(M是按内存排序) 步骤二.找到进程中最耗CPU的线程 top -Hp PID 步骤三.将 ...

  10. JS事件——添加、移除事件

    element.addEventListener(event, function, useCapture) 方法用于向指定元素添加事件句柄.   event: 必须.字符串,指定事件名.注意: 例 使 ...