上面得文件比较长,是我从网上下的,经过修改,下下来的时候其中用错误,大家如果又兴趣可以到网上下载其他的版本,好像叫“一个简单的php利用smtp发送邮件类”,其中有几行
原来的:
$this->in = "MAIL FROM:".$from."\r\n";
$this->docommand();
$this->in = "RCPT TO:".$to."\r\n";
$this->docommand();
改为:
$this->in = "MAIL FROM:<".$from.">\r\n";
$this->docommand();
$this->in = "RCPT TO:<".$to.">\r\n";
$this->docommand();
我是调试之后才发现的,是作者对smtp协议的原语搞错了,掉了一对“<,>”
说道调试我这里要重点强调
1. 把php5.x.x(去官方网站下载)版本中的php.cgi.exe解压个拷到你的php4.x.x目录下
2. 如果你运行sina.php(后面的发邮件文件)用php.exe来执行,需要将C:\php\extensions\目录下php_sockets.dll拷到c:\windows\system32下,否则在调试时,会报错,undefine function create_socket
3. 如果你用php-cgi.exe文件来执行,就不要把php_sockets.dll拷到c:\windows\system32下,如果拷了,要删除!不然报上面一样的错误!
上面的做法具体原因我也不知道,不行你可以试一下!!
我用的开发工具php expert editor试英文的,运行试配置,选择run菜单options,
上面的筐里面是自带的服务器运行,下面的是用apache或iis,建议直接用上面的,不要用下面的,免得报错麻烦!
Sina.php文件
<?php
include('smtp.class.php');
$host="smtp.sina.com"; //主机
$port="25"; //端口一般为25
$user="username"; //SMTP认证的帐号
$pass="999999"; //认证密码
$mails=new smtp_mail($host,$port,$user,$pass,true);
if($mails->send("liugaodemm@sina.com","liugaodemm@163.com","主题","内容"))
{
echo "发送成功!";
}
else
{
echo "邮件服务器忙,请稍候再试试";
}
?>
需要修改你的帐户和密码,发送邮箱,smtp服务器地址等。目前我发现的sina邮箱是可以正常使用,163是无法使用的。
最后的结果为:
创建SOCKET:操作成功完成。
创建SOCKET连接:操作成功完成。
服务器应答:220 smtp.sina.com.cn ESMTP SINAMAIL (Postfix Rules!)
客户机命令:EHLO HELO
服务器应答:250-smtp.sina.com.cn 250-PIPELINING 250-SIZE 19660800 250-VRFY 250-ETRN 250-AUTH LOGIN 250-AUTH=LOGIN 250 8BITMIME
客户机命令:AUTH LOGIN
服务器应答:334 VXNlcm5hbWU6
客户机命令:bGl1Z2FvZGVtbQ==
服务器应答:334 UGFzc3dvcmQ6
客户机命令:bHVvamluZ3lp
服务器应答:235 Authentication successful
客户机命令:MAIL FROM:
服务器应答:250 Ok
客户机命令:RCPT TO:
服务器应答:250 Ok
客户机命令:DATA
服务器应答:354 End data with .
客户机命令:From:liugaodemm@sina.com To:liugaodemm@163.com Subject:主题 Content-Type: text/plain; charset=gb2312 内容 .
服务器应答:250 Ok: queued as 8A2B1108E2C
客户机命令:QUIT
服务器应答:221 Bye
发送成功!
祝大家一路顺利,有问题我们一起交流。
发表于 @ 2007年08月21日 15:44:00|评论(loading...)|编辑