C# 电子邮件发送方法
来源:互联网 发布:第一财经软件 编辑:程序博客网 时间:2024/05/29 10:00
在软件开发时,特别是业务系统,像ERP,CRM等系统,在运维时,依靠管理员每天固定的查询了解系统运行情况,往往会因为机械的操作产生疲劳感,而且这种重复的劳动完全可以依靠系统自身在系统空闲时来完成,然后产生一份每日的运维检查报告自身的运行情况。即时的告知管理员运行时所产生的问题。还有很多的系统报告,如销售报表等。在系统开发时,把检查程序设计进去,然后在运行时,利用电子邮件定时向管理员报告运行情况,这就有效的提供了系统管理的人性化,降低了工作强度。我在做ERP时,给客户实施对此很有感触,客户往往信息化水平并不高,管理员的往往也是让办公室的人顶的,依靠他们主动了解系统的运行情况,是很有风险的,让系统主动告诉管理员系统的运行情况,然后告知一些定义的处理方法,可以让管理员不必事事求着软件公司,作为软件开发方来说,客服的压力可以去掉好多。还有一点,一般来说,客户一般不允许软件公司运维时直接远程接入服务器,同时,除了错误,管理员又看不懂系统日志。系统出错之后,让系统主动把相应的错误日志也当做附件发送给管理员,在与软件公司技术人员沟通时,也会顺畅的多,同时也保证了客户的数据安全。
电子邮件在系统管理时,还是最好的数据采集工具。
开发环境:VS2005 .NET2.0
项目下载地址:CSharpEmail.zip
001
/*****************************************************************/
002
/* 作者:虞晓杰
003
* Emial:fishyxj@sina.com
004
* 2011.9.28
005
* 功能:发送自定义电子邮件,可以用于在系统发送自定义系统邮件。
006
/*****************************************************************/
007
008
using
System;
009
using
System.Net;
010
using
System.Net.Mail;
011
using
System.Net.Mime;
012
namespace
XFish.Utils
013
{
014
/// <summary>
015
/// 电子邮件发送器类
016
/// </summary>
017
public
class
EMailTransmitter
018
{
019
#region 类内部变量
020
private
MailMessage _MailMessage;
021
private
SmtpClient _SmtpClient;
022
private
string
_Password;
023
#endregion
024
025
#region 类属性
026
/// <summary>
027
/// 邮件正文
028
/// </summary>
029
public
string
Body
030
{
031
get
{
return
_MailMessage.Body; }
032
set
{ _MailMessage.Body = value; }
033
}
034
/// <summary>
035
/// 邮件标题
036
/// </summary>
037
public
string
Title
038
{
039
get
{
return
_MailMessage.Subject; }
040
set
{ _MailMessage.Subject = value; }
041
}
042
/// <summary>
043
/// 发送密码
044
/// </summary>
045
public
string
Password
046
{
047
get
{
return
_Password; }
048
set
{ _Password = value; }
049
}
050
#endregion
051
052
#region 类初始化
053
/// <summary>
054
/// 处审核后类的实例
055
/// </summary>
056
/// <param name="To">收件人地址</param>
057
/// <param name="From">发件人地址</param>
058
/// <param name="Body">邮件正文</param>
059
/// <param name="Title">邮件的主题</param>
060
/// <param name="Password">发件人密码</param>
061
public
EMailTransmitter(
string
to,
string
from,
string
body,
string
title,
string
password)
062
{
063
_MailMessage =
new
MailMessage();
064
_MailMessage.To.Add(to);
065
_MailMessage.From =
new
System.Net.Mail.MailAddress(from);
066
_MailMessage.Subject = title;
067
_MailMessage.Body = body;
068
_MailMessage.IsBodyHtml =
true
;
069
_MailMessage.BodyEncoding = System.Text.Encoding.UTF8;
070
_MailMessage.Priority = System.Net.Mail.MailPriority.Normal;
071
_Password = password;
072
}
073
#endregion
074
075
#region 类方法
076
/// <summary>
077
/// 增加接收方地址
078
/// </summary>
079
/// <param name="to">接收方的邮件地址</param>
080
public
void
AddReceiver(
string
to)
081
{
082
MailAddress address =
new
MailAddress(to);
083
if
(!_MailMessage.To.Contains(address))
084
_MailMessage.To.Add(to);
085
}
086
/// <summary>
087
/// 删除指定的接收方地址
088
/// </summary>
089
/// <param name="to">接收方的邮件地址</param>
090
public
void
RemoveReceiver(
string
to)
091
{
092
MailAddress address =
new
MailAddress(to);
093
if
(_MailMessage.To.Contains(address))
094
_MailMessage.To.Remove(address);
095
}
096
/// <summary>
097
/// 添加附件
098
/// </summary>
099
/// <param name="Path">附件的路径</param>
100
public
void
AddAttachments(
string
path)
101
{
102
string
[] paths = path.Split(
','
);
103
Attachment data;
104
ContentDisposition disposition;
105
for
(
int
i = 0; i < paths.Length; i++)
106
{
107
data =
new
Attachment(paths[i], MediaTypeNames.Application.Octet);
//实例化附件
108
disposition = data.ContentDisposition;
109
disposition.CreationDate = System.IO.File.GetCreationTime(paths[i]);
//获取 附件的创建日期
110
disposition.ModificationDate = System.IO.File.GetLastWriteTime(paths[i]);
//获取附件的修改日期
111
disposition.ReadDate = System.IO.File.GetLastAccessTime(paths[i]);
//获取附件的读取日期
112
_MailMessage.Attachments.Add(data);
//添加到附件中
113
}
114
}
115
/// <summary>
116
/// 删除附件
117
/// </summary>
118
/// <param name="path">附件的路径</param>
119
public
void
RemoveAttachments(
string
path)
120
{
121
string
[] paths = path.Split(
','
);
122
Attachment data;
123
ContentDisposition disposition;
124
for
(
int
i = 0; i < paths.Length; i++)
125
{
126
data =
new
Attachment(paths[i], MediaTypeNames.Application.Octet);
127
disposition = data.ContentDisposition;
128
disposition.CreationDate = System.IO.File.GetCreationTime(paths[i]);
//获取 附件的创建日期
129
disposition.ModificationDate = System.IO.File.GetLastWriteTime(paths[i]);
//获取附件的修改日期
130
disposition.ReadDate = System.IO.File.GetLastAccessTime(paths[i]);
//获取附件的读取日期
131
if
(_MailMessage.Attachments.Contains(data))
132
_MailMessage.Attachments.Remove(data);
133
}
134
}
135
/// <summary>
136
/// 异步发送邮件
137
/// </summary>
138
/// <param name="CompletedMethod">完成后调用的事件</param>
139
public
void
SendAsync(SendCompletedEventHandler CompletedMethod)
140
{
141
if
(_MailMessage !=
null
)
142
{
143
_SmtpClient =
new
SmtpClient();
144
_SmtpClient.Credentials =
new
System.Net.NetworkCredential(_MailMessage.From.Address, _Password);
//设置发件人身份的票据
145
_SmtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
146
_SmtpClient.Host =
"smtp."
+ _MailMessage.From.Host;
147
_SmtpClient.SendCompleted +=
new
SendCompletedEventHandler(CompletedMethod);
//注册异步发送邮件完成时的事件
148
_SmtpClient.SendAsync(_MailMessage, _MailMessage.Body);
149
}
150
}
151
/// <summary>
152
/// 发送邮件
153
/// </summary>
154
public
void
Send()
155
{
156
if
(_MailMessage !=
null
)
157
{
158
_SmtpClient =
new
SmtpClient();
159
_SmtpClient.Credentials =
new
System.Net.NetworkCredential(_MailMessage.From.Address, _Password);
//设置发件人身份的票据
160
_SmtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
161
_SmtpClient.Host =
"smtp."
+ _MailMessage.From.Host;
162
_SmtpClient.Send(_MailMessage);
163
}
164
}
165
#endregion
166
}
167
}
- C# 电子邮件发送方法
- c# 发送电子邮件代码
- C#发送电子邮件
- 用C#发送电子邮件
- C# 发送电子邮件
- 使用C#发送电子邮件
- C# 发送电子邮件
- C#发送电子邮件 (同步)
- C#发送电子邮件 (异步)
- C#发送电子邮件 (同步)
- C#发送电子邮件 (异步)
- C#发送电子邮件
- C#发送电子邮件
- c# Web发送电子邮件
- C#发送电子邮件
- C# 发送电子邮件
- 使用C#发送电子邮件
- 发送电子邮件方法
- AAC 文件解析及解码流程
- 好的学习linux内核的网站
- 给程序设置老板键
- 《web前端开发修炼之道》读书笔记
- XCode4.2中使用Empty Application模板替代旧的Window Based Application
- C# 电子邮件发送方法
- 轻松解决SQL Server无法启动的小技巧
- objective C 基础教程
- 函数指针
- 事件的理解
- 类型化的数据集和非类型化数据完成增删改查的操作
- EditorGrid
- Android进阶篇-自定义Menu(设置Menu的背景及文字属性)
- 使用Eclipse IDE for CC++ Developers 构建C++开发环境