原文:C#发送邮件三种方法(Localhost,SMTP,SSL-SMTP)

最近公司由于一个R&I项目的需要,用户要求在购买产品或出货等一些环节,需要发送邮件提醒或者说每周一让系统自动采集数据发送一封E-mail,因此我也就找来相关资料,写了一个Demo分享给大家,大家共同学习学习。
通过.Net FrameWork 2.0下提供的“System.Net.Mail”可以轻松的实现,本文列举了3种途径来发送:
1.通过Localhost;
2.通过普通SMTP;
3.通过SSL的SMTP;
下面一个一个来说:
[html]
  
   public void SendMailLocalhost()  
{  
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();  
msg.To.Add("a@a.com");  
msg.To.Add("b@b.com");  
/* msg.To.Add("b@b.com");  
* msg.To.Add("b@b.com");  
* msg.To.Add("b@b.com");可以发送给多人  
*/  
msg.CC.Add(c@c.com);  
/*  
* msg.CC.Add("c@c.com");  
* msg.CC.Add("c@c.com");可以抄送给多人  
*/  
msg.From = new MailAddress("a@a.com", "AlphaWu", System.Text.Encoding.UTF8);  
/* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/  
msg.Subject = "这是测试邮件";//邮件标题  
msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码  
msg.Body = "邮件内容";//邮件内容  
msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码  
msg.IsBodyHtml = false;//是否是HTML邮件  
msg.Priority = MailPriority.High;//邮件优先级 
  
SmtpClient client = new SmtpClient();  
client.Host = "localhost";  
object userState = msg;  
try  
{  
client.SendAsync(msg, userState);  
//简单一点儿可以client.Send(msg);  
MessageBox.Show("发送成功");  
}  
catch (System.Net.Mail.SmtpException ex)  
{  
MessageBox.Show(ex.Message, "发送邮件出错");  
}  

    public void SendMailLocalhost()  
{  
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();  
msg.To.Add("a@a.com");  
msg.To.Add("b@b.com");  
/* msg.To.Add("b@b.com");  
* msg.To.Add("b@b.com");  
* msg.To.Add("b@b.com");可以发送给多人  
*/  
msg.CC.Add(c@c.com);  
/*  
* msg.CC.Add("c@c.com");  
* msg.CC.Add("c@c.com");可以抄送给多人  
*/  
msg.From = new MailAddress(master@boys90.com, "dulei", System.Text.Encoding.UTF8);  
/* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/  
msg.Subject = "这是测试邮件";//邮件标题  
msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码  
msg.Body = "邮件内容";//邮件内容  
msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码  
msg.IsBodyHtml = false;//是否是HTML邮件  
msg.Priority = MailPriority.High;//邮件优先级 
SmtpClient client = new SmtpClient();  
client.Host = "localhost";  
object userState = msg;  
try  
{  
client.SendAsync(msg, userState);  
//简单一点儿可以client.Send(msg);  
MessageBox.Show("发送成功");  
}  
catch (System.Net.Mail.SmtpException ex)  
{  
MessageBox.Show(ex.Message, "发送邮件出错");  
}  
}

2.通过普通SMTP C#代码如下
[html]
public void SendMailUseZj()    
{    
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();    
msg.To.Add(a@a.com);    
msg.To.Add(b@b.com);    
/*   
* msg.To.Add("b@b.com");   
* msg.To.Add("b@b.com");   
* msg.To.Add("b@b.com");可以发送给多人   
*/    
msg.CC.Add("c@c.com");    
/*   
* msg.CC.Add("c@c.com");   
* msg.CC.Add("c@c.com");可以抄送给多人   
*/    
msg.From = new MailAddress("master@boys90.com", "dulei", System.Text.Encoding.UTF8);    
/* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/    
msg.Subject = "这是测试邮件";//邮件标题    
msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码    
msg.Body = "邮件内容";//邮件内容    
msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码    
msg.IsBodyHtml = false;//是否是HTML邮件    
msg.Priority = MailPriority.High;//邮件优先级    
   
  SmtpClient client = new SmtpClient();   
client.Credentials = new System.Net.NetworkCredential("dulei@71info.com", "userpass");    
//在71info.com注册的邮箱和密码    
client.Host = "smtp.71info.com";    
object userState = msg;    
try    
{    
client.SendAsync(msg, userState);    
//简单一点儿可以client.Send(msg);    
MessageBox.Show("发送成功");    
}    
catch (System.Net.Mail.SmtpException ex)    
{    
MessageBox.Show(ex.Message, "发送邮件出错");    
}    
}

3.通过SSL的SMTP
[html]
public void SendMailUseGmail()    
{    
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();    
msg.To.Add(a@a.com);    
msg.To.Add(b@b.com);    
/*   
 msg.To.Add("b@b.com");   
* msg.To.Add("b@b.com");   
* msg.To.Add("b@b.com");可以发送给多人   
*/    
msg.CC.Add(c@c.com);    
/*   
* msg.CC.Add("c@c.com");   
* msg.CC.Add("c@c.com");可以抄送给多人   
*/    
msg.From = new MailAddress("boys90.com", "dulei", System.Text.Encoding.UTF8);    
/* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/    
msg.Subject = "这是测试邮件";//邮件标题    
msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码    
msg.Body = "邮件内容";//邮件内容    
msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码    
msg.IsBodyHtml = false;//是否是HTML邮件    
msg.Priority = MailPriority.High;//邮件优先级    
SmtpClient client = new SmtpClient();    
client.Credentials = new System.Net.NetworkCredential("boys90com@gmail.com", "password");    
//上述写你的GMail邮箱和密码    
client.Port = 587;//Gmail使用的端口    
client.Host = "smtp.gmail.com";    
client.EnableSsl = true;//经过ssl加密    
object userState = msg;    
try    
{    
client.SendAsync(msg, userState);    
//简单一点儿可以client.Send(msg);    
MessageBox.Show("发送成功");    
}    
catch (System.Net.Mail.SmtpException ex)    
{    
MessageBox.Show(ex.Message, "发送邮件出错");    
}    
}  
 
通过Gmail来发送邮件,成功率极高,几乎都可以发到,推荐使用,以上的几种方法,我想已经够我们做开发的用了。至于我做的Demo我整理好了就分享给大家。
我的独立博客90男孩分享网 欢迎大家光临,我们一起努力学习更多的知识,分享网快乐分享,快乐生活!!

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

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

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

  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. 创建线程的两种方式:继承Thread类和实现Runnable接口

    第一种方式:继承Thread类 步骤:1.定义类继承Thread 2.覆写Threa类的run方法. 自定义代码放在run方法中,让线程运行 3.调用线程的star方法, 该线程有两个作用:启动线程, ...

  2. 83. 从视图索引说Notes数据库(上)

    索引是数据库系统重要的feature,不管是传统的关系型数据库还是时兴的NoSQL数据库,它攸关查询性能,因而在设计数据库时须要细加考量.然而,Lotus Notes隐藏技术底层.以用户界面为导向.追 ...

  3. 開始开发 Dashboard Widgets,第2章,读书笔记

    文件夹:http://blog.csdn.net/wide288/article/details/40298693 主要内容: widgets 的组成是什么. 怎么创建 info.plist 文件 怎 ...

  4. C编程的指针涛 ---第十笔记

    //指针实例搜索算法 //迷宫算法 //搜索是最长的使用深度优先搜索和广度优先搜索 //作为名称作为一个深度优先搜索,每路一直在寻找到底. //为了防止想法,这样的数据结构 //使得每次找到思路的时候 ...

  5. SQL_sql的简单查询

    ***********************************************声明*************************************************** ...

  6. zoj 3823 Excavator Contest(结构体)

    题目链接:zoj 3823 Excavator Contest 题目大意:一个人开着挖掘机要在N*N的格子上面移动.要求走全然部的格子.而且转完次数要至少为n*(n-1) - 1次, 而且终点和起点必 ...

  7. [Mac] Mac book pro互换SSD硬盘、生产启动U菜、TimeMachine恢复 小记

    Mac book pro 硬盘故障.互换SSD硬盘.启动U磁盘生产 小记 2012新年买Mbp了.尽管各种功能都能用,但常常频繁的出现鼠标风火轮,已经下好的电影在本地播放时都会隔个几分钟卡一下. 拿到 ...

  8. SQL Server 有关EXCEPT和INTERSECT使用

    熟练使用SQL Server各种使用会带来多大的方便查询.今天介绍EXCEPT和INTERSECT.请注意,这只是语法SQL Server 2005和以上版本支持. EXCEPT它指的是存在于所述第一 ...

  9. Poj Roadblocks(次短路)

    Description Bessie has moved to a small farm and sometimes enjoys returning to visit one of her best ...

  10. ODP.NET 之访问 Oracle 数据库

    ODP.NET 之访问 Oracle 数据库 要相使用 Oracle Data Provider For .NET(ODP.NET), 必须先安装 ODP.NET 或者是 ODAC(Oracle Da ...