您现在的位置: 无忧电子商务网 >> 信息学院 >> 程序开发 >> php >> 正文

用SMTP传送邮件时的问题

作者:作者:未…    信息学院来源:网络收集    点击数:    更新时间:2006-8-27 我要参与讨论

 

下面是我找到的一个直接使用smtp发送邮件的php例子程序(经改编), 但是服务器方总是提示: 550 system busy! 并且邮件无法发送.
那位知道如何处理?

另: 对于smtp服务器需要密码的情况该如何处理验证呢?

sory , 刚刚看到 smtp 发送邮件的问题 (链接的这个帖子怎么不是精华?, 建议斑竹给一个啊).




问题已经解决:
1. 命令data应该是"DATA\r\n"
2. from和to命令应该有, 否则一些server拒发邮件
3.使用base64_encode 加密用户名和密码

<?php

require("php\mail.php");
?>


<?
$smtp = "smtp.163.net";
$from ="hylpro@163.net";

$to = "hylpro@163.net";
$subject ="Hello php mail";



$message="Hello! this is a test use php";

$mail = new mail($smtp,"Welcom use this mail",true);

$mail->send( $to,$from,$subject,$message);

?>



<?
//---------------
// 实现SMTP
//---------------

class Mail{
var $lastmessage; //记录最后返回的响应信息
var $lastact; //最后的动作,字符串形式
var $welcome; //用在HELO后面,欢迎用户
var $debug; //是否显示调试信息
var $smtp; //smtp服务器
var $port; //smtp端口号
var $fp; //socket句柄


//Construct
function mail($smtp, $welcome="", $debug=false)
{
if(empty($smtp)) die("SMTP cannt be NULL!");

$this->smtp=$smtp;
if(empty($welcome))
{
$this->welcome=gethostbyaddr("localhost");
}
else
$this->welcome=$welcome;

$this->debug=$debug;
$this->lastmessage="";
$this->lastact="";
$this->port="25";
}

//
function show_debug($message, $inout)
{
if ($this->debug)
{
if($inout=="in") //响应信息
{
$m="<b> 收: </b>";
}
else
$m="<b> 发: </b>" ;

if(!ereg("n$", $message))
$message .= " ";

$message=nl2br($message);

echo "<font color=#339933> $m </font>$message ";
}
}//end show debug


function do_command($command, $code)
{

$this->lastact=$command."\r\n";
$this->show_debug($this->lastact, "out");

fputs ( $this->fp, $this->lastact );


$this->lastmessage = fgets ( $this->fp, 512 );

$this->show_debug($this->lastmessage, "in");

if(!ereg("^$code", $this->lastmessage)) return false;
else return true;


} //end do command


//发一个命令
function command($command, $code)
{
$this->lastact=$command."\r\n";
$this->show_debug($this->lastact, "out");

fputs ( $this->fp, $this->lastact );

} //end send Cmd

//等待一个应答
function wait($code)
{

$this->lastmessage = fgets ( $this->fp, 512 );
$this->show_debug($this->lastmessage, "in");

if(!ereg("^$code", $this->lastmessage))
{
return false;
}
el

[1] [2] [3] 下一页

在google里搜索更多用SMTP传送邮件时的问题

Google
Web www.51ec.org
  • 上一篇信息学院:

  • 下一篇信息学院:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    我来说两句 对此文章发表了评论
      昵 称: *必填    ·注册用户·
      评 分: 1分 2分 3分 4分 5分     严禁发表危害国家安全、政治、黄色淫秽等内容的评论,用户需对自己在使用本网站服务过程中的行为承担法律责任。本站管理员有权保留或删除评论内容,评论内容只代表机友个人观点,与本网站立场无关。  
    评 论
    内 容

     
    评论列表 (最新 评论仅限网友观点!)

    供求信息




    | 设为首页 | 加入收藏 | 关于我们 | 广告服务 | 联系方式 | 友情链接 | 版权申明