广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 16935 个阅读者
 
<< 上页  1   2  >>(共 2 页)
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
chris710908 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
知名人士
级别: 知名人士 该用户目前不上站
推文 x15 鲜花 x128
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

以下是原始码
<?
    $smtp_acc ="chris"; //Smtp认证的用户名
    $smtp_pass="666";       //Smtp认证的密码,一般等同pop3密码
    $smtp_host="61.62.*.*";   //SMTP伺服器位址,类似 smtp.tom.com
    $lb="\r\n";             //linebreak

    $smtp = array(
          //2、发送Auth Login,期待返回334
          array("AUTH LOGIN".$lb,"334","AUTH error:"),
          //3、发送经过Base64编码的用户名,期待返回334
          array(base64_encode($smtp_acc).$lb,"334","AUTHENTIFICATION error : "),
          //4、发送经过Base64编码的密码,期待返回235
          array(base64_encode($smtp_pass).$lb,"235","AUTHENTIFICATION error : "));
      //打开smtp伺服器端口
    $fp = @fsockopen($smtp_host, 25);
    if (!$fp) echo "<b>Error:</b> Cannot conect to ".$smtp_host."<br>";
    while($result = @fgets($fp, 1024)){if(substr($result,3,1) == " ") { break; }}
   
    $result_str="";
    //发送smtp数组中的命令/数据
    foreach($smtp as $req){
          //发送讯息
          @fputs($fp, $req[0]);
          //如果需要接收伺服器返回讯息,则
          if($req[1]){
                //接收讯息
                while($result = @fgets($fp, 1024)){
                    if(substr($result,3,1) == " ") {break;}                                
                }
                if (!strstr($req[1],substr($result,0,3))){
                    $result_str.=$req[2].$result."<br>";
                }
          }
    }
    //关闭连接
    @fclose($fp);
if(!$result_str){
$mailtype='Content-Type:text/html;charset=big5'
$mailFrom='webmaster@61.62.73.210'
$mailTo=$row_RecMember['m_email'];
$mailCC=''
$mailBCC=''
$mailSubject='会员系统密码认证信'
$mailContent = nl2br($row_RecMember['m_nick'].'您好,您的密码为:'.$row_RecMember['m_passwd']);
$maildata = "From:$mailFrom\r\n";
if ($mailCC != '') {
$maildata .= "CC:$mailCC\r\n";
}
if ($mailBCC != '') {
$maildata .= "BCC:$mailBCC\r\n";
}
$maildata .= "$mailtype";
mail($mailTo,$mailSubject,$mailContent,$maildata);
}else{
echo "错误讯息<br>" . $result_str;
}
?>

执行完之后~~出现错误讯息
AUTH error:502 Unknown command
AUTHENTIFICATION error : 502 Unknown command
AUTHENTIFICATION error : 502 Unknown command
这样是不是认证错误阿~~ㄚ我快疯了~~写程式好难喔~~ 表情
我的MAIL SERVER适用软体建的~基本上没问题,但用程式去写好像会错误
这是怎嚜回事?麻烦大大了~ 表情



献花 x0 回到顶端 [10 楼] From:台湾台湾索尼 | Posted:2005-05-29 01:43 |
chris710908 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
知名人士
级别: 知名人士 该用户目前不上站
推文 x15 鲜花 x128
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

还有~~我PHP.INI中SERVER也有设好了
那网页不采用认证的话是可以跑的~布过采认证
就不行~后面还有些程式码~只要是当使用者输入MAIL后
核对资料库后如果有这MAIL~那嚜就显示"MNAIL已寄出"
没有则显示"抱歉~资料库无此资料"~不知道这会部会影响到?


献花 x0 回到顶端 [11 楼] From:台湾台湾索尼 | Posted:2005-05-29 01:55 |
xxxzzz
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x46
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

我想问几个问题
1.最初3楼的那个程式,确实可用吗?

2.您在8楼执行PHP的时候呈现空白,信有寄出吗?

另外我想几个可能的原因
1.
再把删掉的
//1、EHLO,期待返回220或者250
array("EHLO ".$loc_host.$lb,"220,250","HELO error: "),
补回去看看

2.
502 Unknown command的错误讯息
是否您的SMTP不支援帐号密码认证
telnet loclalhost 25
打上
EHLO localhost
是否有AUTH LOGIN的字样?

3.
改用其他方法认证
例如:pop3认证
复制程式
<?
function pop3_auth(){
        $pop3_acc =""; //pop3认证的用户名
        $pop3_pass="";          //pop3认证的密码
        $pop3_host="";    //pop3伺服器位址
       $sock = @fsockopen( $pop3_host,110);

       if( !$sock )
              return "无法开启连线";

       $msg = fgets( $sock, 256 );
       if( !strstr( $msg, "+OK" ) ) {
              fclose( $sock );
              return "开启连线错误";
       }

       fputs( $sock, "USER $pop3_acc\r\n" );

       $msg = fgets( $sock, 256 );
       if( !strstr( $msg, "+OK" ) ) {
              fclose( $sock );
              return "输入帐号错误";

       }

       fputs( $sock, "PASS $pop3_pass\r\n" );

       $msg = fgets( $sock, 256 );
       if( !strstr( $msg, "+OK" ) ) {
              fclose( $sock );
              return "帐号或密码错误";
       }

       fputs( $sock, "QUIT\r\n" );
       fclose( $sock );
}
if(!pop3_auth()){
//认证通过欲执行的程式
$mailtype='Content-Type:text/html;charset=big5'
$mailFrom=''
$mailTo=''
$mailCC=''
$mailBCC=''
$mailSubject='会员系统密码认证信'
$mailContent = nl2br('您好,您的密码为:');
$maildata = "From:$mailFrom\r\n";
if ($mailCC != '') {
$maildata .= "CC:$mailCC\r\n";
}
if ($mailBCC != '') {
$maildata .= "BCC:$mailBCC\r\n";
}
$maildata .= "$mailtype";
mail($mailTo,$mailSubject,$mailContent,$maildata);
}else{
//认证失败欲执行的程式
echo pop3_auth();
}
?>

4.
只执行上面的程式(先不要跟你其他的部分整合),如果可执行
或是您在8楼的情形也可正确执行
则应该是您整合其他部分时产生的问题
只看这部分似乎较难找出问题所在


献花 x0 回到顶端 [12 楼] From:台湾亚太线上 | Posted:2005-05-29 13:37 |
xxxzzz
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x46
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

还有如果您的主机许可
也可以用imap_open()这个函式认证
这是最简单的


献花 x0 回到顶端 [13 楼] From:台湾亚太线上 | Posted:2005-05-29 13:44 |
chris710908 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
知名人士
级别: 知名人士 该用户目前不上站
推文 x15 鲜花 x128
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

1.那个程式是可用的~但只能用于无SMTP认证的方式

2.信没有寄出,我看到MAIL SERVER的讯息是Error: [10054] Connection reset by peer
SMTP connection with 61.62.*.* ended. ID=1~我的软体是ArGoSoft Mail Server

3.大大用的那个POP3方法,可以寄出信(无整合其他程式码),但是这样可以避免我的MAIL SERVER 不被RELY吗?因为我的SERVER的enable SMTP认证没开启才能寄出去,开启的话,一样寄不出。

4.大大说的imap_open()事怎样的方式,有什么限制吗,我的MAIL SERVER好像没看到imap这个选项?

5.我的SERVER应该是可以支援SMTP认证的~因为我用类似OUTLOOKㄉ软体寄发信~都有用SMTP认证
只是在PHP的环境下用程式既不出去~这跟PHP.INI有关系ㄇ?因为这档案里面不支援认证


[ 此文章被chris710908在2005-05-29 14:38重新编辑 ]


献花 x0 回到顶端 [14 楼] From:台湾台湾索尼 | Posted:2005-05-29 14:21 |
xxxzzz
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x46
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用chris710908于2005-05-29 14:21发表的 :
3.大大用的那个POP3方法,可以寄出信(无整合其他程式码),但是这样可以避免我的MAIL SERVER 不被RELY吗?因为我的SERVER的enable SMTP认证没开启才能寄出去,开启的话,一样寄不出。
.......
应该可以设定成只有本机可以Relay
不过这样就不能用其他电脑寄信了


下面是引用chris710908于2005-05-29 14:21发表的 :
4.大大说的imap_open()事怎样的方式,有什么限制吗,我的MAIL SERVER好像没看到imap这个选项?
.......
类似pop3看信用的
php的imap_open()函式可以用帐号密码开启就比较方便
效果跟之前的pop3认证差不多


下面是引用chris710908于2005-05-29 14:21发表的 :
5.我的SERVER应该是可以支援SMTP认证的~因为我用类似OUTLOOKㄉ软体寄发信~都有用SMTP认证
只是在PHP的环境下用程式既不出去~这跟PHP.INI有关系ㄇ?因为这档案里面不支援认证
SMTP认证应该跟PHP.INI没关系

另外试了一下ArGoSoft Mail Server
2005/5/29 下午 05:49:48 - (   3) 220 ArGoSoft Mail Server Freeware, Version 1.8 (1.8.7.8)
2005/5/29 下午 05:49:52 - (   3) AUTH LOGIN
2005/5/29 下午 05:49:52 - (   3) 502 Unknown command
2005/5/29 下午 05:50:05 - (   3) EHLO localhost
2005/5/29 下午 05:50:05 - (   3) 250-Welcome [127.0.0.1], pleased to meet you
2005/5/29 下午 05:50:05 - (   3) 250-AUTH=LOGIN
2005/5/29 下午 05:50:05 - (   3) 250-AUTH LOGIN
2005/5/29 下午 05:50:05 - (   3) 250-SIZE 5242880
2005/5/29 下午 05:50:05 - (   3) 250 HELP
2005/5/29 下午 05:50:15 - (   3) AUTH LOGIN
2005/5/29 下午 05:50:15 - (   3) 334 VXNlcm5hbWU6

所以我觉得
把删掉的 //1、EHLO,期待返回220或者250
array("EHLO ".$loc_host.$lb,"220,250","HELO error: "),
补回去
应该就可以用了
我这边不方便测试
您试试看吧

此文章被评分,最近评分记录
财富:250 (by andyz) | 理由: 热心帮助版有解决问题~


献花 x0 回到顶端 [15 楼] From:台湾亚太线上 | Posted:2005-05-29 17:53 |
chris710908 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
知名人士
级别: 知名人士 该用户目前不上站
推文 x15 鲜花 x128
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

恩~我试过很多次了~~把那段复制过去后~~然后SERVER也开SMTP认证
网页已经可以正常运作了,部会出现错误讯息~只是信还是寄不出去
算了啰~~小弟放弃了~反正先可以寄就好啰~
那如果被不明人士RELAY的话~我的电脑会有危险ㄇ(比如被植入病毒)
因为我用的这套软体好像没有限本机才能RELAY的功能~~
---------------------------------------------------------------------
谢谢大大热心的教学喔~~让我受益良多ㄋ 表情


献花 x0 回到顶端 [16 楼] From:台湾台湾索尼 | Posted:2005-05-29 20:14 |
xxxzzz
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x46
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用chris710908于2005-05-29 20:14发表的 :
恩~我试过很多次了~~把那段复制过去后~~然后SERVER也开SMTP认证
网页已经可以正常运作了,部会出现错误讯息~只是信还是寄不出去
算了啰~~小弟放弃了~反正先可以寄就好啰~
那如果被不明人士RELAY的话~我的电脑会有危险ㄇ(比如被植入病毒)
因为我用的这套软体好像没有限本机才能RELAY的功能~~
.......
我知道您为什么没错误讯息但开认证还是寄不出了
因为上面的程式确认帐号密码认证完后...
连线就关闭了
  //关闭连接
  @fclose($fp);
再来执行的mail()函式寄信,当然寄不出了
之前我测试的机器可以在本机不用认证寄信,所以都没发现 表情

所以我想如果把@fclose($fp);改在mail()之后不知道可不可行
不知道mail()会不会继续用fsockopen()开的连线?
(目前没合适的环境可测试,如果您有试,记得告诉我喔 表情

另外一个方法就是
把资料传给最初3楼的程式寄
(我想这样应该可以...可是您似乎试过3楼的程式开SMTP认证不能用?)

其实这些我也是第一次试...也不太懂... 表情


献花 x0 回到顶端 [17 楼] From:台湾亚太线上 | Posted:2005-05-29 23:19 |
chris710908 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
知名人士
级别: 知名人士 该用户目前不上站
推文 x15 鲜花 x128
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

我也试过了将@fclose($fp);放到后面了~
可是还是出现Error: [10054] Connection reset by peer
会是我是虚拟IP的关系吗?可是我有开启PORT25跟110阿~
表情 还是不成功~~阿勒~我在试试看ㄅ~谢啰 表情


献花 x0 回到顶端 [18 楼] From:台湾台湾索尼 | Posted:2005-05-30 17:48 |
shing3728
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x4
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

明白了 ^^
谢谢!! 表情 表情


献花 x0 回到顶端 [19 楼] From:APNIC | Posted:2010-09-11 10:42 |

<< 上页  1   2  >>(共 2 页)
首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.058223 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言