2010. 12. 1. 09:36

소켓을 통한 메일 발송함수

PHP의 mail() 함수가 동작하지 않거나 localhost 에 smtp가 설치되지 않아서 다른 서버의 smtp를 이용하여 메일을 전송할 때 사용

function sendmail($subject, $body, $from, $to, $type = 'text/html') {
	$smtp_id = "아이디"; 
	$smtp_pwd = "비번";
	$host = "아이피";
	
	$fp = fsockopen($host, 25, &$errno, &$errstr, 10);
	if(!$fp) {
		exit('메일오류 ['.$errno.'] '.$errstr);
	}
	fgets($fp, 128);  
	fputs($fp, "helo $host\r\n");  
	fgets($fp, 128);
	
	// 로긴
	fputs($fp, "auth login\r\n"); 
	fgets($fp,128); 
	fputs($fp, base64_encode($smtp_id)."\r\n"); 
	fgets($fp,128); 
	fputs($fp, base64_encode($smtp_pwd)."\r\n"); 
	fgets($fp,128); 
	
	fputs($fp, "mail from: <$from>\r\n");  
	$returnvalue[0] = fgets($fp, 128);  
	fputs($fp, "rcpt to: <$to>\r\n");  
	$returnvalue[1] = fgets($fp, 128); 
	fputs($fp, "data\r\n");  
	fgets($fp, 128);  
	fputs($fp, "Return-Path: $from\r\n");  
	fputs($fp, "From: \"$from\" <$from>\r\n");  
fputs($fp, "To: <$to>\r\n"); fputs($fp, "Subject: $subject\r\n"); fputs($fp, "Content-Type: ".$type."; charset=\"euc-kr\"\r\n"); fputs($fp, "\r\n"); //$body = chunk_split(base64_encode($body)); fputs($fp, $body); fputs($fp, "\r\n"); fputs($fp, "\r\n.\r\n"); $returnvalue[2] = fgets($fp, 128); fclose($fp); //print_r($returnvalue); if (preg_match("/^250/", $returnvalue[0])&&preg_match("/^250/", $returnvalue[1])&&preg_match("/^250/", $returnvalue[2])) { return true; } else { return false; } } if(sendmail('제목', '내용', '발신', '수신')) echo '성공'; else echo '실패';