在PHP中用Socket发送电子邮件

http://tech.ddvip.com   2007年08月26日    社区交流

内容摘要:发送邮件的过程需要时间,可能与mail()的处理机制还不完全一样,所以速度要慢一些,但是可以解决需要发送邮件功能的燃眉之急,同时你也可以学习用php 进行socket编程。下面就将这个类的实现原理介绍给大家,同时向大家讲解一些关于SMTP的基本知识。

   有些意思很清楚的我就不说了。

  这个函数一共有四个参数,分别是$to表示收信人,$from表示发信人,$subject表求邮件主题和$message表示邮件体。如果处理成功则返回true,失败则返回false。

  第8行,连接邮件服务器,如果成功响应码应为220。

  第12行,设置阻塞模式,表示信息必须返回才能继续。详细说明看手册吧。

  第16行,判断响应码是否为220,如果是,则继续处理,否则出错返回。

  第22-27行,处理HELO指令,期望响应码为250。

  第29-34行,处理MAIL FROM指令,期望响应码为250。

  第36-41行,处理RCPT TO指令,期望响应码为250。

  第44-49行,处理DATA指令,期望响应码为354。

  第51-76行,生成邮件体,并发送。

  第52-56行,如果$subject不为空,则查找邮件体中是否有主题部分,如果没有,则加上主题部分。

  第59-63行,如果$from不为空,则查找邮件体中是否有发信人部分,如果没有,则加上发信人部分。

  第66-70行,如果$to不为空,则查找邮件体中是否有收信人部分,如果没有,则加上收信人部分。

  第73-74行,查找邮件体是否有了结束行,如果没有则加上邮件体的结束行(以"."作为单独的一行的特殊行)。

  第76行,发送邮件体。

  第78-83行,执行QUIT结否与服务器的连接,期望响应码为250。

  第85行,返回处理成功标志(true)。

  第81-91行,与服务器连接失败的处理。

  以上为整个send_mail类的实现,应该不是很难的。

  下面给出一个实例。

  邮件发送实例

  先给出一个最简单的实例:

--------------------------------------------------------
1 include "sendmail.class.php3";
2 $email="Hello, this is a test letter!";
3 $sendmail=new send_mail("smtp.263.net", "limodou", true); //显示调示信息
4 if($sendmail->send("chatme@263.net", "chatme@263.net", "test", $email))
5 {
6 echo "发送成功!
";
7 }
8 else
9 {
10 echo "发送失败!
";
11 }
?>
----------------------------------------------------------

责编:豆豆技术应用

正在加载评论...