廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 16399 個閱讀者
 
<< 上頁  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.020122 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言