プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、PHPプログラムでpop before smtpを行う。
FTPやりたかったのですよ(--)
PHPプログラムでFTPアクセス。

ところがどっこいセキュリティの関係で
メール受信(っつーかPOP認証)しないとFTP接続できなくてですね。
仕方ないのでプログラム内でPOP認証させることにしました。

今回やりたいのは厳密には「pop before smtp」と違うけど
まぁ内容としては同じでしょ(--)ノ

っつー訳でコードは例えばこんなんφ(--)

  $mailbox = "{mail.hoge.jp:110/pop3}INBOX";    //メールボックス
  $user = "user";        //ユーザID
  $pwd = "pwd";        //パスワード
  
  imap_open($mailbox, $user, $pwd);


メールボックスへのIMAPストリームをオープンする関数だけど
プロトコルでPOP3を指定できるらしい(笑)

完了\(--)/

……なのですが、私の環境ではこんなエラーで
IMAPストリームをオープンできなかったのですよφ(--)

couriertls: connect: error:14094418:
SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca

証明書周りのエラーかよ、ごふっ(×_×)
このサーバ、借り物だからいじれねーんだよ(ノ∀`)

仕方ないのでSocket経由で地道にやることにしましたφ(--)

  $host = "mail.hoge.jp";        //ホスト名
  $port = 110;                //ポート
  $user = "user";                //ユーザ名
  $pwd = "pwd";                パスワード
  
  //Socketオープン
  $fp = fsockopen($host, $port);
  
  $line = fgets($fp, 512);
  
  //ユーザ名ぽいっちょ
  fputs($fp, "USER $user\r\n");
  
  $line = fgets($fp, 512);
  
  //パスワードぽいっちょ
  fputs($fp, "PASS $pwd\r\n");
  
  $line = fgets($fp, 512);
  
  if(!eregi("OK", $line)){
      //ログイン失敗
      fclose($fp);
      return false;
  }
  
  //さよーなら
  fputs($fp, "QUIT\r\n");
  
  //Socketクローズ
  fclose($fp);
  
  return true;



今度こそ完了\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事