2010. 12. 1. 09:36
소켓을 통한 메일 발송함수
2010. 12. 1. 09:36 in 자작소스/PHP
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 '실패';