1 引言
电子邮件介绍
电子邮件(简称E-mail)又称电子信箱、电子邮政,它是一种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送,它是一个简易、快速的方法。通过连接全世界的Internet,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的各个角落。到目前为止,可以说电子邮件是Internet资源使用最多的一种服务,E-mai1不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。
电子邮件不是一种“终端到终端”的服务,是被称为“存贮转发式”服务。这正是电子信箱系统的核心,利用存贮转发可进行非实时通信,属异步通信方式。即信件发送者可随时随地发送邮件,不要求接收者同时在场,即使对方现在不在,仍可将邮件立刻送到对方的信箱内,且存储在对方的电子邮箱中。接收者可在他认为方便的时候读取信件,不受时空限制。在这里,“发送”邮件意味着将邮件放到收件人的信箱中,而“接收”邮件则意味着从自己的信箱中读取信件,信箱实际上是由文件管理系统支持的一个实体。因为电子邮件是通过邮件服务器(mai1server)来传递档的。通常mailserver是执行多任务操作系统UNIX的计算机,它提供24小时的电子邮件服务,用户只要向 mail server管理人员申请一个信箱账号,就可使用这项快速的邮件服务。
电子邮件的工作原理:
- 电子邮件系统是一种新型的信息系统,是通信技术和计算机技术结合的产物。电子邮件的传输是通过电子邮件简单传输协议(Simple Mail Transfer Protocol,简称SMTP)这一系统软件来完成的,它是Internet下的一种电子邮件通信协议。
- 电子邮件的基本原理,是在通信网上设立“电子信箱系统”,它实际上是一个计算机系统。系统的硬件是一个高性能、大容量的计算机。硬盘作为信箱的存储介质,在硬盘上为用户分一定的存储空间作为用户的“信箱”,每位用户都有属于自己的—个电子信箱。并确定—个用户名和用户可以自己随意修改的口令。存储空间包含存放所收信件、编辑信件以及信件存盘三部分空间,用户使用口令开启自己的信箱,并进行发信、读信、编辑、转发、存档等各种操作。系统功能主要由软件实现。
- 电子邮件的通信是在信箱之间进行的。用户首先开启自己的信箱,然后通过键入命令的方式将需要发送的邮件发到对方的信箱中。邮件在信箱之间进行传递和交换,也可以与另—个邮件系统进行传递和交换。收方在取信时,使用特定账号从信箱提取。
2 代码实现部分
2.1 新建邮件帮助类,自由命名即可,这里以Utilities_Xofly为例
邮件帮助类也可以在这里查看:SmtpServerHelper
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Mail;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace Sea.Common
{
public class Utilities_Xofly
{
public enum MailFormat { Text, HTML };
public enum MailPriority { Low = 1, Normal = 3, High = 5 };
/// <summary>
/// 添加附件
/// </summary>
public class MailAttachments
{
#region 构造函数
public MailAttachments()
{
_Attachments = new ArrayList();
}
#endregion
#region 私有字段
private IList _Attachments;
private const int MaxAttachmentNum = 10;
#endregion
#region 索引器
public string this[int index]
{
get { return (string)_Attachments[index]; }
}
#endregion
#region 公共方法
/// <summary>
/// 添加邮件附件
/// </summary>
/// <param name="FilePath">附件的绝对路径</param>
public void Add(params string[] filePath)
{
if (filePath == null)
{
throw (new ArgumentNullException("非法的附件"));
}
else
{
for (int i = 0; i < filePath.Length; i++)
{
Add(filePath[i]);
}
}
}
/// <summary>
/// 添加一个附件,当指定的附件不存在时,忽略该附件,不产生异常。
/// </summary>
/// <param name="filePath">附件的绝对路径</param>
public void Add(string filePath)
{
if (System.IO.File.Exists(filePath))
{
if (_Attachments.Count < MaxAttachmentNum)
{
_Attachments.Add(filePath);
}
}
}
/// <summary>
/// 清除所有附件
/// </summary>
public void Clear()
{
_Attachments.Clear();
}
/// <summary>
/// 获取附件个数
/// </summary>
public int Count
{
get { return _Attachments.Count; }
}
#endregion
}
/// <summary>
/// 邮件信息
/// </summary>
public class MailMessage
{
#region 构造函数
public MailMessage()
{
_Recipients = new ArrayList(); //收件人列表
_Attachments = new MailAttachments(); //附件
_BodyFormat = MailFormat.HTML; //缺省的邮件格式为HTML
_Priority = MailPriority.Normal;
_Charset = "GB2312";
}
#endregion
#region 私有字段
private int _MaxRecipientNum = 30;
private string _From; //发件人地址
private string _FromName; //发件人姓名
private IList _Recipients; //收件人
private MailAttachments _Attachments;//附件
private string _Body; //内容
private string _Subject; //主题
private MailFormat _BodyFormat; //邮件格式
private string _Charset = "GB2312"; //字符编码格式
private MailPriority _Priority; //邮件优先级
#endregion
#region 公有属性
/// <summary>
/// 设定语言代码,默认设定为GB2312,如不需要可设置为""
/// </summary>
public string Charset
{
get { return _Charset; }
set { _Charset = value; }
}
/// <summary>
/// 最大收件人
/// </summary>
public int MaxRecipientNum
{
get { return _MaxRecipientNum; }
set { _MaxRecipientNum = value; }
}
/// <summary>
/// 发件人地址
/// </summary>
public string From
{
get { return _From; }
set { _From = value; }
}
/// <summary>
/// 发件人姓名
/// </summary>
public string FromName
{
get { return _FromName; }
set { _FromName = value; }
}
/// <summary>
/// 内容
/// </summary>
public string Body
{
get { return _Body; }
set { _Body = value; }
}
/// <summary>
/// 主题
/// </summary>
public string Subject
{
get { return _Subject; }
set { _Subject = value; }
}
/// <summary>
/// 附件
/// </summary>
public MailAttachments Attachments
{
get { return _Attachments; }
set { _Attachments = value; }
}
/// <summary>
/// 优先权
/// </summary>
public MailPriority Priority
{
get { return _Priority; }
set { _Priority = value; }
}
/// <summary>
/// 收件人
/// </summary>
public IList Recipients
{
get { return _Recipients; }
}
/// <summary>
/// 邮件格式
/// </summary>
public MailFormat BodyFormat
{
set { _BodyFormat = value; }
get { return _BodyFormat; }
}
#endregion
#region 公共方法
/// <summary>
/// 增加一个收件人地址
/// </summary>
/// <param name="recipient">收件人的Email地址</param>