Daniel's Knowledge Storage

외부 smtp사용해서 메일 발송 본문

Develop/PHP

외부 smtp사용해서 메일 발송

다니엘SEO 2009. 8. 31. 05:55

php 에는 mail이라는 함수가 있는데 window에서만 php.ini 안에서 smtp서버를 설정할수가 있다.

따라는 os가 window가 아닐 경우는 아래 함수를 직접 만들어서 이용한다. 포퍼먼스는 얼마나 좋은진 모르나... 다른 smtp 서버를 꼭 이용하여야 할 경우에는 유용하게 쓸 수 있다.

 

DATA 전까지는 꼭 fgets 을 해야한다.

<?
function sendmail($smtp_server, $smtp_user, $name, $from, $to, $subject, $message, $html_yn, $charset ) {

 if (!$smtp_sock = fsockopen("$smtp_server", 25)) {
  die ("Couldn't open mail connection to $smtp_server! \n");
 }

 fputs($smtp_sock, "HELO $smtp_server\n");
 fgets($smtp_sock,1024);
 //fputs($smtp_sock, "VRFY $stmp_user\n");
 fputs($smtp_sock, "MAIL FROM:$from\n");
 fgets($smtp_sock,1024);
 fputs($smtp_sock, "RCPT TO:$to\n");
 fgets($smtp_sock,1024);
 fputs($smtp_sock, "DATA\n");
 fputs($smtp_sock, "From: $name<$from>\n");
 fputs($smtp_sock, "X-Mailer: php\n");
 if ($html_yn) fputs($smtp_sock, "Content-Type: text/html;");
 else fputs($smtp_sock, "Content-Type: text/plain;");
 fputs($smtp_sock, "charset: $charset\n");
 fputs($smtp_sock, "MIME-Version: 1.0\n");
 fputs($smtp_sock, "Subject: $subject\n");
 fputs($smtp_sock, "To: $to\n");
 fputs($smtp_sock, "$message");
 fputs($smtp_sock, "\n.\nQUIT\n");
 fclose($smtp_sock);
}

// SMTP SERVER IP
$smtp_server = "xxx.xxx.xxx.xxx";
// SMTP SERVER USER
$smtp_user = "xxx";
// 보내는 사람 이름
$name = "류성훈";
// 보내는 사람 주소
$from = "xxx@xxx.xxx";
// 받는 사람 주소
$to = "yyy@yyy.yyy";
// 메일 제목
$subject = "제목";
// 메일 내용
$message = "메세지";
// 메일 형식
$html_yn = false;
// 캐릭터셋
$charset = "UTF-8";

sendmail($smtp_server, $smtp_user, $name, $from, $to, $subject, $message, $html_yn, $charset);
?>

Comments