C#实现电子邮件的发送

本文介绍了如何使用C#实现电子邮件的发送。讲解了电子邮件的基本概念和工作原理,并提供了新建邮件帮助类Utilities_Xofly的示例,包括SMTP服务器的配置、方法调用以及邮件的接收验证。
摘要由CSDN通过智能技术生成

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>  
         
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

互联网搬砖老肖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值