SMTP协议

这段时间在看网络高级编程,对于SMTP协议C#进行了很多封装,使我们使用起来相当方便

SMTP是英文Simple Mail Transfer Protocol的缩写,意为简单邮件传输协议,默认端口为25

在SMTP协议中,电子邮件由三部分组成,信封、首部和正文。

1) 信封

信封包括发信人的邮件地址和接收人的邮件地址,用两条SMTP命令指明。

 ① MAIL FROM:<发信人的地址>,告诉SMTP服务器发信人的地址。

 ② RCPT TO:<收信人的地址>,告诉SMTP服务器收信人的地址。

2) 首部

首部中常用命令:

① FROM:<姓名><邮件地址>,表明邮件发送者是谁。

② TO:<姓名><邮件地址>,表明邮件接收者是谁。

③ SUBJECT:<邮件标题>,表明邮件的主题。

④ DATE:<时间>,表明发邮件的时间。

⑤ REPLY-TO:<邮件地址>,表明邮件的回复地址。

⑥ Content-Type:<邮件类型>,表明邮件包含文本、HTML超文本和附件的哪些类型。

⑦ X-Priority:<邮件优先级>,表明邮件的发送优先级。

⑧MIME-Version:<版本>,MIME的意思是Multipurpose Internet Mail Extensions,即多用途Internet邮件扩展标准,它对传输内容的消息、附件及其他的内容定义了格式。

 3) 正文

    正文是邮件的内容。首部以一个空行结束,再下面就是正文部分。

 4) 结束符号

    邮件以“.”结束。

对于C#发送邮件我们只需要了解几个基本的类就行了

 1) System.Net命名空间下的NetworkCredential类

NetworkCredential myCredentials = new NetworkCredential("发件人邮件地址", "密码");//提供发件人的用户名发密码

MailAddress类用于提供发件人和收件人的邮件地址,常用形式为:

MailAddress from = new MailAddress("发件人邮件地址");

MailAddress to = new MailAddress("收件人邮件地址");

MailMessage类用于提供邮件的信息,包括主题、内容、附件、信息类型等,常用形式为:

MailMessage message = new MailMessage(from, to);

message.Subject = "主题";

message.SubjectEncoding = System.Text.Encoding.UTF8;

message.Body = "邮件内容";

message.BodyEncoding = System.Text.Encoding.UTF8;

Attachment类用于提供附件对象,常用形式为

Attachment attachFile = new Attachment("文件名");

message.Attachments.Add(attachFile);

5) SmtpClient类用于发送邮件,常用形式为:

SmtpClient client = new SmtpClient("邮件服务器地址");

client.Send(message);

发送邮件方法:

  private void SendMail(SmtpClient client, MailAddress from, string p, MailAddress to, MailMessage message)
        {
            //不使用默认凭证,注意此句必须放在client.Credentials的上面
            client.UseDefaultCredentials = false;
            //指定用户名和密码
            client.Credentials = new NetworkCredential(from.Address, p);
            //邮件通过网络发送到服务器
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            try
            {
                client.Send(message);
            }
            catch { throw; }
            finally
            {
                //及时释放占用资源
                message.Dispose();
            }
        }

 

以上几个类就能实现C#对SMTP协议的使用,能进行邮件的基本发送,相对来说很简单,都不需要调用SMTP的相关命令

下面的例子就是对上面的几个类的运用,能进行邮件的发送/Files/fujinliang/SendMailExample.rar 

 

 

 

posted @ 2012-06-26 21:25  广拓小程序  阅读(7235)  评论(0编辑  收藏  举报