phpmailer download site : http://phpmailer.worxware.com/
홈페이지를 제작하다 보면 mail을 발송할 때가 많이 발생합니다. 하지만 현재 사용 중인 웹 서버가
화이트 도메인이 아닌 경우와 메일서버(sandmail, qmail 등)이 설치되어 있지 않은 경우에는
PHPMailer를 이용해서 구글(Gmail)이나 네이버, 구글, 다음, 네이트 등의 SMTP를 사용하면 쉽게 해결될 수 있는 문제입니다.
일단 단점부터 말하자면 SSL을 통하여 인증 받는 방식이라 인증 받는 단계에 시간이 제법 걸립니다.
그러므로 발송 시 시간 제법 지연됩니다.(약 3~5초 정도)
장점은 네이버, 구글, 다음, 네이트 등의 서버가 스팸메일로 등록될 가능성이 매우 희박하므로 화이트 도메인과
웹 메일 서버에 구애받지 않아 어디든지 전송이 가능합니다.
또한 보안에 취약하고 관리가 어려운 메일서버를 구축할 필요가 없습니다.
SMTP 사용시 주의해야할 사항은 구글 메일을 사용 시 구글 메일에서 자신의 메일이 등록된 후 대표 메일로
설정된다면 SMTP 인증을 하는 ID가 아닌 대표 메일로 발송이 가능하지만 네이버 메일 같은 경우는 메일 발신자가
SMTP 인증을 하는 계정으로만 가능합니다.
본격적으로 SMTP 설정하는 법을 알아보도록 하겠습니다.
먼저 아래 로고를 클릭하여 PHPMailer를 받도록 합니다.
해당 웹 사이트의 메일이 발송되는 곳에 class.smtp.php와 class.phpmailer.php만 FTP프로그램을 통하여 업로드하고
아래의 소스를 메일 발송될 페이지에 추가 시켜 줍니다.
$smtp_mail_id = "구글 메일이나 네이버메일 계정"; 예)test@naver.com 혹은 test@gmail.com 등의 형식
$smtp_mail_pw = "구글이나 네이버 ID의 패스워드";
$to_email = "받는사람메일주소"; 예) test@naver.com
$to_name = "받는사람 이름"; 예)홍길동
$title = "TEST 메일 제목"; 예)홍길동님의 문의사항 등록되었습니다.
$from_name = "보내는사람 이름";
$from_email = "보내는사람 이메일";
$content = "메일내용 <br> html도 가능";
$smtp_use = 'smtp.naver.com'; //네이버 메일 사용시
//$smtp_use = 'smtp.gmail.com'; //구글 메일 사용시 주석제거
if ($smtp_use == 'smtp.naver.com') {
$from_email = $smtp_mail_id; //네이버메일은 보내는 id로만 전송이가능함
}else {
$from_email = $from_email;
}
//메일러 로딩
require_once("class.phpmailer.php");
$mail = new PHPMailer(true);
$mail->IsSMTP();
try {
$mail->Host = $smtp_use; // email 보낼때 사용할 서버를 지정
$mail->SMTPAuth = true; // SMTP 인증을 사용함
$mail->Port = 465; // email 보낼때 사용할 포트를 지정
$mail->SMTPSecure = "ssl"; // SSL을 사용함
$mail->Username = $smtp_mail_id; // 계정
$mail->Password = $smtp_mail_pw; // 패스워드
$mail->SetFrom($from_email, $from_name); // 보내는 사람 email 주소와 표시될 이름 (표시될 이름은 생략가능)
$mail->AddAddress($to_email, $to_name); // 받을 사람 email 주소와 표시될 이름 (표시될 이름은 생략가능)
$mail->Subject = $title; // 메일 제목
$mail->MsgHTML($content); // 메일 내용 (HTML 형식도 되고 그냥 일반 텍스트도 사용 가능함)
$mail->Send(); // 실제로 메일을 보냄
echo "메일을 전송하였습니다.";
} catch (phpmailerException $e) {
echo $e->errorMessage();
} catch (Exception $e) {
echo $e->getMessage();
}
주석에 적혀져 있는 내용을 꼼꼼히 보시고 자신에게 맞게 수정합니다.
이러면 네이버나 구글 등 포털 사이트의 SMTP를 이용해서 메일발송이 가능합니다.
홈페이지를 통하여 문의사항을 많이 받으시는 분이라면 화이트 도메인 문제로 인하여
난감한 상황에 빠졌을 때 SMTP를 사용하여 쉽게 해결하기 바랍니다.
참고 사이트 : http://baraem2005.blog.me/20175791360
error case1. Called Mail() without being connected
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=373312
error case2. SMTP Error: The following recipients failed: SMTP server error: 5.7.1 ..... are NOT allowed to RELAY
메일 주소 확인하기
error case3. 한글 깨짐 현상
PHPMailer는 기본적으로 content type이 text/plain에다가 charset에 utf8설정이 안되어 있기 때문에
본분에 meta content-type 같은걸 적어줘도 적용이 안되는 경우가 있다.
예제파일에는 안적혀 있어서 좀 찾아야 했던 케이스
$m = new PHPMailer(true);
$m->ContentType = “text/html”;
$m->CharSet = “utf-8”;
'Old > PHP' 카테고리의 다른 글
php mysql_result에 관하여 (0) | 2013.03.21 |
---|---|
simplexml error handling (0) | 2013.03.21 |
WeatherBug 날씨 (0) | 2013.03.18 |
특정 문자열 사이에 있는 값 가져오기 (0) | 2013.03.15 |
문자열을 배열로 반환 (0) | 2013.03.15 |