邮件发送在网站应用程序中经常会用到,包括您现在看到的博客,在添加评论后,系统会自动发送邮件通知到我邮箱的,把系统发送邮件的功能整理了下,做了一个客户端Demo,希望对有需要的童鞋有所帮助:

核心代码:

001 using System;
002 using System.Net;
003 using System.Net.Mail;
004 using System.Text;
005  
006 namespace HC.Email
007 {
008     ///
<summary>
009     ///    
整站邮件服务类
010     ///
</summary>
011     public class EmailService
012     {
013         ///
<summary>
014         ///    
发送邮件
015         ///
</summary>
016         ///
<param name="mailTo">收件人
017         ///
<param name="subject">主题
018         ///
<param name="body">内容
019         ///
<returns></returns>
020         public static bool Send(string mailTo, string subject, string body)
021         {
022             return Send(new[]
{mailTo}, 
null,
subject, body, 
truenull);
023         }
024  
025         ///
<summary>
026         ///    
发送邮件
027         ///
</summary>
028         ///
<param name="mailTo">收件人
029         ///
<param name="subject">主题
030         ///
<param name="body">内容
031         ///
<returns></returns>
032         public static bool Send(string[]
mailTo, 
string subject, string body)
033         {
034             return Send(mailTo, null,
subject, body, 
truenull);
035         }
036  
037         ///
<summary>
038         ///    
发送邮件
039         ///
</summary>
040         ///
<param name="mailTo">收件人
041         ///
<param name="subject">主题
042         ///
<param name="body">内容
043         ///
<param name="attachmentsPath">附件
044         ///
<returns></returns>
045         public static bool Send(string[]
mailTo, 
string subject, string body, string[]
attachmentsPath)
046         {
047             return Send(mailTo, null,
subject, body, 
true,
attachmentsPath);
048         }
049  
050  
051         ///
<summary>
052         ///    
发送邮件
053         ///
</summary>
054         ///
<param name="mailTo">收件人
055         ///
<param name="mailCcArray">抄送
056         ///
<param name="subject">主题
057         ///
<param name="body">内容
058         ///
<param name="isBodyHtml">是否Html
059         ///
<param name="attachmentsPath">附件
060         ///
<returns></returns>
061         public static bool Send(string[]
mailTo, 
string[]
mailCcArray, 
string subject,string body, bool isBodyHtml,
062                                 string[]
attachmentsPath)
063         {
064             try
065             {
066                 var
config = ConfigHelper.GetConfig<emailconfig>();
067                 if (string.IsNullOrEmpty(config.Host)
||
string.IsNullOrEmpty(config.UserName)
||
068                     string.IsNullOrEmpty(config.Port)
||
string.IsNullOrEmpty(config.Password))
069                 {
070                     //todo:记录日志
071                     return false;
072                 }
073                 var
@from = 
new MailAddress(config.MailFrom); //使用指定的邮件地址初始化MailAddress实例
074                 var
message = 
new MailMessage(); //初始化MailMessage实例
075                 //向收件人地址集合添加邮件地址
076                 if (mailTo
!= 
null)
077                 {
078                     foreach (string in mailTo)
079                     {
080                         message.To.Add(t);
081                     }
082                 }
083  
084                 //向抄送收件人地址集合添加邮件地址
085                 if (mailCcArray
!= 
null)
086                 {
087                     foreach (string in mailCcArray)
088                     {
089                         message.CC.Add(t);
090                     }
091                 }
092                 //发件人地址
093                 message.From
= @from;
094  
095                 //电子邮件的标题
096                 message.Subject
= subject;
097  
098                 //电子邮件的主题内容使用的编码
099                 message.SubjectEncoding
= Encoding.UTF8;
100  
101                 //电子邮件正文
102                 message.Body
= body;
103  
104                 //电子邮件正文的编码
105                 message.BodyEncoding
= Encoding.Default;
106                 message.Priority
= MailPriority.High;
107                 message.IsBodyHtml
= isBodyHtml;
108  
109                 //在有附件的情况下添加附件
110                 if (attachmentsPath
!= 
null &&
attachmentsPath.Length > 0)
111                 {
112                     foreach (string path in attachmentsPath)
113                     {
114                         var
attachFile = 
new Attachment(path);
115                         message.Attachments.Add(attachFile);
116                     }
117                 }
118                 try
119                 {
120                     var
smtp = 
new SmtpClient
121                         {
122                             Credentials
new NetworkCredential(config.UserName,
config.Password),
123                             Host
= config.Host,
124                             Port
= Convert.ToInt32(config.Port)
125                         };
126  
127                     //将邮件发送到SMTP邮件服务器
128                     smtp.Send(message);
129                     //todo:记录日志
130                     return true;
131                 }
132                 catch (SmtpException
ex)
133                 {
134                     //todo:记录日志
135                     return false;
136                 }
137             }
138             catch (SmtpException
ex)
139             {
140                 //todo:记录日志
141                 return false;
142             }
143         }
144     }
145 }

源代码下载


版权声明:本文为博主原创文章,未经博主允许不得转载。

C# SMTP邮件发送 分类: C# 2014-07-13 19:10 333人阅读 评论(1) 收藏的更多相关文章

  1. C# SMTP邮件发送 分类: C# 2014-07-13 19:10 334人阅读 评论(1) 收藏

    邮件发送在网站应用程序中经常会用到,包括您现在看到的博客,在添加评论后,系统会自动发送邮件通知到我邮箱的,把系统发送邮件的功能整理了下,做了一个客户端Demo,希望对有需要的童鞋有所帮助: 核心代码: ...

  2. 浅谈IOS8之size class 分类: ios技术 2015-02-05 19:06 62人阅读 评论(0) 收藏

    文章目录 1. 简介 2. 实验 3. 实战 3.1. 修改 Constraints 3.2. 安装和卸载 Constraints 3.3. 安装和卸载 View 3.4. 其他 4. 后话 以前和安 ...

  3. Network Saboteur 分类: 搜索 POJ 2015-08-09 19:48 7人阅读 评论(0) 收藏

    Network Saboteur Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10147 Accepted: 4849 Des ...

  4. Power Strings 分类: POJ 串 2015-07-31 19:05 8人阅读 评论(0) 收藏

    Time Limit:3000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Status Practice POJ ...

  5. Hdu 1506 Largest Rectangle in a Histogram 分类: Brush Mode 2014-10-28 19:16 93人阅读 评论(0) 收藏

    Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  6. 二分图匹配 分类: ACM TYPE 2014-10-01 19:57 94人阅读 评论(0) 收藏

    #include<cstdio> #include<cstring> using namespace std; bool map[505][505]; int n, k; bo ...

  7. Brush Mode --- Nyoj 737 分类: Brush Mode 2014-03-25 08:10 202人阅读 评论(0) 收藏

    石子合并(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述     有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆 ...

  8. Hibernate检索方式 分类: SSH框架 2015-07-10 22:10 4人阅读 评论(0) 收藏

    我们在项目应用中对数据进行最多的操作就是查询,数据的查询在所有ORM框架中也占有极其重要的地位.那么,如何利用Hibernate查询数据呢?Hibernate为我们提供了多种数据查询的方式,又称为Hi ...

  9. Can you find it? 分类: 二分查找 2015-06-10 19:55 5人阅读 评论(0) 收藏

    Description Give you three sequences of numbers A, B, C, then we give you a number X. Now you need t ...

随机推荐

  1. VS2012创建UML项目

    1.选择建模工具 2.添加新建项 3.添加UML图或用例图 4.打开工具箱添加

  2. linux ssh 登录同时执行其他指令

    目的:懒的敲一些重复的指令,比如登录后cd到某个目录. 咋办: ssh -t user@xxx.xxx.xxx.xxx "cd /directory_wanted ; bash" ...

  3. poj 2153

    题意:题目还是很简单的,就是求Li Ming 在班上的排名,而且成绩是相加的. 思路:用map就行.不然好像用qsort+二分也可以,不过我在那里碰到了一些状况,然后就没用这种方法了,简单的map就可 ...

  4. c3p0 config

    c3p0-config.xml<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> ...

  5. CEF3开发者系列之进程和线程

    CEF3是一个多进程架构框架,如果有了解过chromium的进程架构的,那么就很容易了解CEF3的多进程了.打开CEF3源代码中发布的cefclient实例,如果打开的页面带有flash或者其他插件. ...

  6. ECharts分析xdebug跟踪日志

    2015年12月23日 15:36:11 星期三 之前用的是国外的图表工具, 有点麻烦, 文档是英文的, 看着不顺眼, 发现了百度出品的ECharts, 文档比较全, 功能比较多, 做出的图也比较好看 ...

  7. Angular中使用Rainbow

    在使用js类库和框架的时候,大家都习惯于编写自己的使用示例,如果能将示例中的html,js和css 进行展示, 并进行高亮显示,效果会很棒,例如在html高亮显示jquery代码 上面的示例是使用ra ...

  8. 关于TxQBService报的错,腾讯你真牛B啊

    腾讯你真牛B啊,浏览器都7了,还特么的报这么低级的错误,还每10秒写一条windows日志,让人有什么心情用你的浏览器,滚.

  9. 8.SpringMVC参数传递

    页面参数传递到controller, 可被同名(与页面标签上的name名对应)的参数接收,用request设值,页面再取出来. 注意乱码解决办法: ①如果是get提交,则在tomcat的server. ...

  10. nyoj739_笨蛋难题四

    笨蛋难题四 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 这些日子笨蛋一直研究股票,经过调研,终于发现xxx公司股票规律,更可喜的是 笨蛋推算出这家公司每天的股价, ...