본문 바로가기
웹프로그램

[PHP] 보안서버(ssl)에서 메일 발송 하기

by 세이박스 2009. 10. 29.
반응형
보안 서버로 ssl 적용 후 부터 php 메일 발송시 발송이 안되기 시작하였다.

원인을 확인 해보니 보안 smtp 로 발송해야 한다는 사실을 알게 되었다.

그래서, 이래저래 알아보니 메일 서버가 별도로 있는경우 보안 릴레이 방식으로 발송을 하면 된다는것을 알게되어 적용 하였다.

먼저, 메일서버의 릴레이 발송할 개정이 하나 있어야 한다.

다음 함수에 메일서버 ip 및 릴레이 개정 정보를 입력하시면 됩니다.

function sendmail($name, $from, $to, $subject, $body, $html, $charset ) {
 $smtp_server   = "아이피"; //stmp ip를 입력
 $smtp_user = "아이디"; //smtp id 입력
 $smtp_passwd = "비밀번호"; //smtp 비밀번호 입력

 if(!$smtp_sock = fsockopen("$smtp_server", 25)) {
  return false;
 }
 fputs($smtp_sock, "AUTH LOGIN\n");
 fputs($smtp_sock, base64_encode($smtp_user)."\n");
 fputs($smtp_sock, base64_encode($smtp_passwd)."\n");
 fputs($smtp_sock, "HELO $smtp_server\n");
 fputs($smtp_sock, "VRFY $stmp_user\n");
 fputs($smtp_sock, "MAIL FROM:$from\n");
 fputs($smtp_sock, "RCPT TO:$to\n");
 fputs($smtp_sock, "DATA\n");
 fputs($smtp_sock, "From: $name<$from>\n");
 fputs($smtp_sock, "X-Mailer: miplus\n");  
 if($html) fputs($smtp_sock, "Content-Type: text/html;");
 else fputs($smtp_sock, "Content-Type: text/plain;");  
 fputs($smtp_sock, "charset=$charser\n");
 fputs($smtp_sock, "MIME-Version: 1.0\n");
 fputs($smtp_sock, "Subject: $subject\n");
 fputs($smtp_sock, "To: $to\n");
 fputs($smtp_sock, "$body");
 fputs($smtp_sock, "\n.\nQUIT\n");
 fclose($smtp_sock);
 return true;
}

$text = "<html><body>test</body></html>"; //html 방식으로 발송 가능
$subject = "메일제목";
$from = "
custom@test.co.kr"; //발송자 이메일 주소
$from_name = "이름"; //발송자 이름
$to =
member@test.co.kr" //수신자 이메일 주소
$html = 1; //HTML 테그 1:사용, 0:사용안함
$charset = "UTF-8"; //언어 EUC-KR, UTF-8

if(sendmail($from_name,$from,$to,$subject,$text,$html,$charset)) {
   echo "발송완료";
} else {
   echo "발송실패";
}

빨간색으로 표시한 부분만 설정에 맞게 고쳐서 이용하시면 됩니다.
반응형