通过SMTP协议来发送邮件

简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是事实上的在Internet传输email的标准。

SMTP是一个相对简单的基于文本协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。可以很简单地通过telnet程序来测试一个SMTP服务器。SMTP使用TCP端口25。要为一个给定的域名决定一个SMTP服务器,需要使用MX (Mail eXchange) DNS

在八十年代早期SMTP开始被广泛地使用。当时,它只是作为UUCP的补充,UUCP更适合于处理在间歇连接的机器间传送邮件。相反,SMTP在发送和接收的机器始终连接在网络的情况下工作得最好。

Sendmail是最早实现SMTP的邮件传输代理之一。到2001年至少有50个程序将SMTP实现为一个客户端(消息的发送者)或一个服务器(消息的接收者)。一些其他的流行的SMTP服务器程序包括了Philip Hazel的exim,IBM的Postfix, D. J. Bernstein的Qmail,以及Microsoft Exchange Server

由于这个协议开始是基于纯ASCII文本的,它在二进制文件上处理得并不好。诸如MIME的标准被开发来编码二进制文件以使其通过SMTP来传输。今天,大多数SMTP服务器都支持8位MIME扩展,它使二进制文件的传输变得几乎和纯文本一样简单。

SMTP是一个“推”的协议,它不允许根据需要从远程服务器上“拉”来消息。要做到这点,邮件客户端必须使用POP3IMAP。另一个SMTP服务器可以使用ETRN在SMTP上触发一个发送。

以下就是在C#中通过SMTP协议来进行邮件的发送

 1 public static string MailSending(string Dep_Email, string Mis_Name, string Mis_Describe, string File_Path)
 2         {
 3             string MailUser = ConfigurationManager.AppSettings["MailUser"].ToString();
 4             string MailName = ConfigurationManager.AppSettings["MailName"].ToString();
 5             string MailHost = ConfigurationManager.AppSettings["MailHost"].ToString();
 6             string MailPwd = ConfigurationManager.AppSettings["MailPwd"].ToString();
 7             MailAddress from = new MailAddress(MailUser, MailName);
 8             MailMessage mail = new MailMessage();
 9             mail.Subject = Mis_Name;
10             mail.From = from;
11             string[] mailNames = (Dep_Email + ";").Split(new char[]{';'});
12             string[] array = mailNames;
13             for (int i = 0; i < array.Length; i++)
14             {
15                 string name = array[i];
16                 if (name != string.Empty)
17                 {
18                     string displayName;
19                     string address;
20                     if (name.IndexOf('<') > 0)
21                     {
22                         displayName = name.Substring(0, name.IndexOf('<'));
23                         address = name.Substring(name.IndexOf('<') + 1).Replace('>', ' ');
24                     }
25                     else
26                     {
27                         displayName = string.Empty;
28                         address = name.Substring(name.IndexOf('<') + 1).Replace('>', ' ');
29                     }
30                     mail.To.Add(new MailAddress(address, displayName));
31                 }
32             }
33             mail.Body = Mis_Describe;
34             mail.BodyEncoding = Encoding.UTF8;
35             mail.IsBodyHtml = true;
36             mail.Priority = MailPriority.Normal;
37             if (File_Path != "")
38             {
39                 mail.Attachments.Add(new Attachment(File_Path));
40                 mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
41             }
42             SmtpClient client = new SmtpClient();
43             client.Host = MailHost;
44             client.Port = 25;
45             client.UseDefaultCredentials = false;
46             client.Credentials = new NetworkCredential(MailUser, MailPwd);
47             client.DeliveryMethod = SmtpDeliveryMethod.Network;
48             mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
49             client.Send(mail);
50             return mail.ToString();
51         }
View Code

 

posted @ 2013-10-06 23:24  Ant_song  阅读(535)  评论(0编辑  收藏  举报