개발 Q&A

제목 네이버 smtp 보낸메일함때문에 포트를 587로 해야하는데 하도 답답해서 질문합니다.
글쓴이 작성시각 2015/10/12 18:39:44
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 13847   RSS
/**
     * 메일 발송
     * @param string $id
     * @param string $pass
     * @param string $from
     * @param string $to
     * @param string $subject
     * @param string $message
     * @param string $name
     * @param boolean $decode
     * @return boolean
     */
    function send_email ( $id=false, $pass=false, $to=false, $subject=false, $message=false, $name=false, $decode=true  ) {
    	if( !$id || !$pass || !$to || !$subject || !$message || !$name ) show_error('인수가 올바르지 않습니다.');
    	
    	$dpass = $pass;
    	if($decode){
	    	$this->load->library('encrypt');
	    	$dpass = $this->encrypt->decode($pass);
    	}
		$this->layout = "default";
		$config['mailtype']  = "html";
		$config['charset']   = "utf-8";
		$config['protocol']  = "smtp";
		$config['smtp_host'] = "ssl://smtp.naver.com";
		$config['smtp_port'] = 587;
		$config['smtp_user'] = $id;
		$config['smtp_pass'] = $dpass;
		$config['smtp_timeout'] = 10;
		
		
		$this->load->library('email', $config);
		$this->email->set_newline("\r\n");
		$this->email->clear();
		$this->email->from($id, $name);
		$this->email->to($to);
		$this->email->subject($subject);
		$this->email->message($message);
		
		if ($this->email->send())
			return true;
		else
			return false;
		
		//echo $this->email->print_debugger();
	}

메일 발송 루틴이고요.

A PHP Error was encountered

Severity: Warning

Message: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

Filename: libraries/Email.php

Line Number: 1689

에러 메세지입니다.

네이버 587포트로 소켓연결이 안되네요  ㅡㅡ;;;
465포트로 변경하면 발송 잘됩니다.
프로토콜도 ssl로 했구요.

 다음글 node.js(express, socket.io) + ... (1)
 이전글 은행계좌 조회하는 api 나 솔루션이 있나요? (1)

댓글

변종원(웅파) / 2015/10/12 19:48:16 / 추천 0
에러 메세지로 검색하면 답 많이 나옵니다 ^^ error 140770fc
/ 2015/10/13 09:31:22 / 추천 0
웅파//
답변과 관심주셔서 감사합니다.
영어를 잘 못해서 구글번역기를 쓰고 있는데, 제가 무지해서 답변을 못찾았습니다.
검색한 내용을 바탕으로 유추해보면 587포트는 tls라는 프로토콜 ssl3버전으로 통신하려고 하고
저는 openssl을 사용중인데 아마도 ssl2버전일거 같습니다. 서로 프로토콜이 맞지 않아서 소켓오류가
발생했을거 같은데, 현재 os는 centos7에 php, mariadb, nginx를 yum으로 설치 사용하고 있는데,
openssl을 yum update로 업데이트 시키면 해결이 될런지 궁굼합니다만,
현재 다른 스케쥴 때문에 나중에 해결해 봐야겠습니다.
혹시 다른분 비슷한 경우가 있을 수 있어서 메모 남기고, 다른 포럼여러분들도 혹시 해결하거나
실마리를 찾길 바랍니다. 해결하시면 댓글 부탁해요...