仓酷云

标题: PHP网页设计用Socket发送电子邮件 [打印本页]

作者: 若天明    时间: 2015-2-4 00:04
标题: PHP网页设计用Socket发送电子邮件
培训的第二阶段,开始了PHP语言语法结构和应用的学习。   

PHP 主页空间中,可以供应mail功效的其实不多,老是挪用完mail()函数以后就毫无下文了。然而电子邮件在网上生涯中的感化愈来愈大。想想网虫上彀不收邮件能较真正的网虫吗?邮件的感化我不想再说了,然而假如主页空间不撑持mail()发送那末怎样办呢?我也想过经由过程socket来完成邮件发送,但无法对用php 停止socket编程不熟习,再加上发送邮件要用到SMTP协定,又要读很多的英文了,所以一向也没有去研讨过。终究有一天我发明了一篇文章,关于用socket编程发送邮件。我大喜过望般将其拷贝上去,而且将其改革成了一个php 可用的类,供人人利用。本来的文章只是一个复杂的例子,并且还有一些毛病,在我经由屡次的实行、改革终究将其改成了一个直接利用socket,向指定的邮箱发送邮件的类,假如人人和后面关于发送MIME的文章联合起来,就能够完成在不撑持mail()函数的网站上发送邮件了。由于发送邮件的进程需求工夫,能够与mail()的处置机制还不完整一样,所以速度要慢一些,然而可以处理需求发送邮件功效的迫在眉睫,同时你也能够进修用php 停止socket编程。上面就将这个类的完成道理引见给人人,同时向人人解说一些关于SMTP的根基常识。
   
  Socket编程引见
   
    向人人声名,自己不是一个TCP/IP编程专家,故在此只是讲出了我的一点了解和体味。
   
    利用fsockopen函数翻开一个Internet毗连,函数语法格局:
   
  int fsockopen(string hostname, int port, int [errno], string [errstr], int [timeout]);
   
    参数的意思我想不必讲了,这里因为要利用SMTP协定,所以端标语为25。在翻开毗连胜利后,会前往一个socket句柄,利用它就能够象利用文件句柄一样的。可以使用的操作有fputs(),fgets(),feof(),fclose()等。
   
  SMTP的基本
    基于TCP/IP的因特网协定普通的号令格局都是经由过程恳求/ 应对体例完成的,采取的都是文本信息,所以处置起来要轻易一些。SMTP是复杂邮件传输协定的简称,它可以完成客户端向办事器发送邮件的功效。所以上面所讲的号令是指客户端向办事器收回恳求指令,而呼应则是指办事器前往给客户真个信息。
   
    SMTP分为号令头和信息体两局部。号令头次要完成客户端与办事器的毗连,验证等。全部进程由多条号令构成。每一个号令发到办事器后,由办事器给出呼应信息,通常是3 位数字的呼应码和呼应文本。分歧的办事器前往的呼应码是恪守协定的,然而呼应注释本则不用。每一个号令及呼应的最初都有一个回车符,如许利用fputs()和fgets()就能够停止号令与呼应的处置了。SMTP的号令及呼应信息都是单行的。信息体则是邮件的注释局部,最初的停止行应以独自的"."作为停止行。
   
    客户端一些经常使用的SMTP指令为:
   
  HELO hostname: 与办事器打召唤并告诉客户端利用的机械名字,可以随意填写
  MAIL FROM: sender_id : 告知办事器发信人的地址
  RCPT TO: receiver_id : 告知办事器收信人的地址
  DATA : 上面入手下手传输函件内容,且最初要以只含有.的特别行停止
  RESET: 作废方才的指令,重新入手下手
  VERIFY userid: 校验帐号是不是存在(此指令为可选指令,办事器能够不撑持)
  QUIT : 加入毗连,停止
    办事器前往的呼应信息为(格局为:呼应码+空格+注释):
   
  220 办事停当(在socket毗连胜利时,会前往此信息)
  221 正在处置
  250 恳求邮件举措准确,完成(HELO,MAIL FROM,RCPT TO,QUIT指令履行胜利会前往此信息)
  354 入手下手发送数据,停止以 .(DATA指令履行胜利会前往此信息,客户端应发送信息)
  500 语法毛病,号令不克不及辨认
  550 号令不克不及履行,邮箱有效
  552 中止处置:用户超越文件空间
培训的第一阶段,学习的是HTML/CSS/JavaScript基础。
作者: 小魔女    时间: 2015-2-4 08:24
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
作者: 山那边是海    时间: 2015-2-7 11:29
Ps:以上纯属原创,如有雷同,纯属巧合
作者: 活着的死人    时间: 2015-2-8 17:49
做为1门年轻的语言,php一直很努力。
作者: 飘飘悠悠    时间: 2015-2-17 06:46
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
作者: 不帅    时间: 2015-3-5 16:38
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
作者: 兰色精灵    时间: 2015-3-26 13:20
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
作者: 冷月葬花魂    时间: 2015-3-27 02:08
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
作者: 再现理想    时间: 2015-3-27 08:08
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者: 飘灵儿    时间: 2015-4-1 18:58
做为1门年轻的语言,php一直很努力。
作者: 小妖女    时间: 2015-4-15 10:29
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
作者: 精灵巫婆    时间: 2015-4-21 13:27
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
作者: 愤怒的大鸟    时间: 2015-5-1 09:52
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
作者: 仓酷云    时间: 2015-5-6 00:10
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
作者: 变相怪杰    时间: 2015-5-11 00:13
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
作者: 只想知道    时间: 2015-6-10 00:12
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
作者: 第二个灵魂    时间: 2015-6-11 19:26
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者: 简单生活    时间: 2015-6-14 08:48
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
作者: 老尸    时间: 2015-6-18 05:52
爱上php,他也会爱上你。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2