通过SMTP协议来发送邮件
2013-10-06 23:24
429 查看
简单邮件传输协议 (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是一个“推”的协议,它不允许根据需要从远程服务器上“拉”来消息。要做到这点,邮件客户端必须使用POP3或IMAP。另一个SMTP服务器可以使用ETRN在SMTP上触发一个发送。
以下就是在C#中通过SMTP协议来进行邮件的发送
View Code
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是一个“推”的协议,它不允许根据需要从远程服务器上“拉”来消息。要做到这点,邮件客户端必须使用POP3或IMAP。另一个SMTP服务器可以使用ETRN在SMTP上触发一个发送。
以下就是在C#中通过SMTP协议来进行邮件的发送
public static string MailSending(string Dep_Email, string Mis_Name, string Mis_Describe, string File_Path) { string MailUser = ConfigurationManager.AppSettings["MailUser"].ToString(); string MailName = ConfigurationManager.AppSettings["MailName"].ToString(); string MailHost = ConfigurationManager.AppSettings["MailHost"].ToString(); string MailPwd = ConfigurationManager.AppSettings["MailPwd"].ToString(); MailAddress from = new MailAddress(MailUser, MailName); MailMessage mail = new MailMessage(); mail.Subject = Mis_Name; mail.From = from; string[] mailNames = (Dep_Email + ";").Split(new char[]{';'}); string[] array = mailNames; for (int i = 0; i < array.Length; i++) { string name = array[i]; if (name != string.Empty) { string displayName; string address; if (name.IndexOf('<') > 0) { displayName = name.Substring(0, name.IndexOf('<')); address = name.Substring(name.IndexOf('<') + 1).Replace('>', ' '); } else { displayName = string.Empty; address = name.Substring(name.IndexOf('<') + 1).Replace('>', ' '); } mail.To.Add(new MailAddress(address, displayName)); } } mail.Body = Mis_Describe; mail.BodyEncoding = Encoding.UTF8; mail.IsBodyHtml = true; mail.Priority = MailPriority.Normal; if (File_Path != "") { mail.Attachments.Add(new Attachment(File_Path)); mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess; } SmtpClient client = new SmtpClient(); client.Host = MailHost; client.Port = 25; client.UseDefaultCredentials = false; client.Credentials = new NetworkCredential(MailUser, MailPwd); client.DeliveryMethod = SmtpDeliveryMethod.Network; mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; client.Send(mail); return mail.ToString(); }
View Code
相关文章推荐
- 初识反射API
- ThinkPHP第十一天(关联模型使用,独立分组配置,MySQL concat用法)
- TPC-H整理
- php c扩展
- php基础
- phpcms v9中模板标签使用说明
- matplotlib 初使用
- php MessagePack介绍
- PHP、JSP、.NET各自的真正优势是什么
- 一名合格的PHP工程师的知识结构是怎样的
- phpcms v9 企业黄页模块注册企业时的主营行业无法选择的解决办法
- vsftp功能分析及虚拟用户服务
- WampServer -- “You don't have permission to access /phpmyadmin/ on this server.”
- Ubuntu下的PHP开发环境架设
- 【PHP框架CodeIgniter学习】Helloworld
- SSIS_控制流(FTP 任务)
- php MessagePack介绍
- PHP 开发环境的搭建和使用03-- 安装mySql
- cakephp中用内置邮件组件发送Gmail邮件
- lftp使用详解