기존 PHP Mailer 를 사용하는 경우, 네이버 메일 주소로는 메일 전송이 안되는 경우가 있습니다.
그럴 때 메일 전송이 가능한 PHP Mailer 소스를 공유합니다.
※ 다량 메일 전송, 대용량 첨부파일 메일 전송 등은 테스트 해보지 않았습니다.
이 소스를 사용하기 위해서는 PHP Mailer에 사용될 네이버 아이디가 하나 필요합니다.
(제재를 받거나 이용 정지를 당한 아이디는 PHP Mailer로 메일이 발송되지 않습니다.)
1. 네이버 아이디 설정
1) 네이버 메일함 -> 환경 설정
2) POP3/IMAP 설정
3) IMAP/SMTP 설정 탭
4) IMAP/SMTP 사용 체크 -> 확인
여기까지 했으면, 일단 네이버 아이디는 PHP Mailer를 사용할 준비가 완료되었습니다.
2. PHP 소스
위 첨부파일에 PHPMailer 에 필요한 파일들이 들어있습니다.
1) mailer.lib.php 상단에 PHPMailer/PHPMailerAutoload.php 를 include 하기위해 경로를 지정합니다. (PHPMailer 폴더를 업로드 후, 사용)
mailer.lib.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
<?php
include_once('폴더경로/PHPMailer/PHPMailerAutoload.php');
// 네이버 메일 전송
// 메일 -> 환경설정 -> POP3/IMAP 설정 -> POP3/SMTP & IMAP/SMTP 중에 IMAP/SMTP 사용
// mailer("보내는 사람 이름", "보내는 사람 메일주소", "받는 사람 메일주소", "제목", "내용", "type");
// type : text=0, html=1, text+html=2
// ex) mailer("kOO", "zzxp@naver.com", "zzxp@naver.com", "제목 테스트", "내용 테스트", 1);
function mailer($fname, $fmail, $to, $subject, $content, $type=0, $file="", $cc="", $bcc="")
{
if ($type != 1)
$content = nl2br($content);
$mail = new PHPMailer(); // defaults to using php "mail()"
$mail->IsSMTP();
// $mail->SMTPDebug = 2;
$mail->SMTPSecure = "ssl";
$mail->SMTPAuth = true;
$mail->Host = "smtp.naver.com";
$mail->Port = 465;
$mail->Username = "네이버 아이디";
$mail->Password = "네이버 아이디 비밀번호";
$mail->CharSet = 'UTF-8';
$mail->From = $fmail;
$mail->FromName = $fname;
$mail->Subject = $subject;
$mail->AltBody = ""; // optional, comment out and test
$mail->msgHTML($content);
$mail->addAddress($to);
if ($cc)
$mail->addCC($cc);
if ($bcc)
$mail->addBCC($bcc);
if ($file != "") {
foreach ($file as $f) {
$mail->addAttachment($f['path'], $f['name']);
}
}
return $mail->send();
}
// 파일을 첨부하는 경우 사용
function attach_file($filename, $tmp_name)
{
// 서버에 업로드 되는 파일은 확장자를 주지 않는다. (보안 취약점)
$dest_file = '경로지정/tmp/'.str_replace('/', '_', $tmp_name);
move_uploaded_file($tmp_name, $dest_file);
$tmpfile = array("name" => $filename, "path" => $dest_file);
return $tmpfile;
}
?>
|
2) PHP Mailer를 실제 사용할 파일 상단에 mailer.lib.php 파일을 include 한 후, 아래 예시처럼 mailer를 실행합니다.
(mailer.lib.php 파일은 첨부파일에 포함되어 있습니다.),
mailer_test.php (테스트를 위해 임의로 생성한 파일)
1
2
3
4
5
6
|
<?php
include_once('경로지정/mailer.lib.php');
// mailer("보내는 사람 이름", "보내는 사람 메일주소", "받는 사람 메일주소", "제목", "내용", "1");
mailer("test", "test@naver.com", "test@naver.com", "제목", "내용", 1);
?>
|
해당 PHP Mailer를 적용하여, 아래 처럼 메일 전송 테스트를 해보았습니다.
1
2
3
4
5
6
|
<?php
.
.
.
mailer("PHPMailer", "보내는사람메일@naver.com", "받는사람메일@naver.com", "조용한 웹 개발자의 블로그", "내용", 1);
?>
|
테스트 결과 화면입니다.
네이버가 아닌 다른 메일 (gmail, daum 등) 에도 전송이 가능합니다.
이 소스를 악용할 경우, 해당 PHP Mailer에 사용한 네이버 아이디가 제재 및 정지 당할 수 있으니,
일반적인 메일 발송 용도로 사용하는 것을 추천드립니다.
2018.02.05 내용 추가
@hotmail.com 로의 전송은 스팸 메일함으로 들어가는 것을 확인하였습니다.
'웹 개발 & 정보 > PHP' 카테고리의 다른 글
PHP 이미지 워터마크(텍스트&이미지) 삽입하기 (0) | 2020.11.10 |
---|---|
[PHP] 네이버 검색 API로 내 사이트에 뉴스 검색 결과 출력하기 (6) | 2018.08.28 |
[PHP] 텔레그램 api로 알림(push) 받기 (1) | 2018.03.04 |
[PHP] 헤더를 이용한 파일 다운로드 구현 (1) | 2017.10.19 |
[PHP] curl 페이지 크롤링 함수 (0) | 2017.10.16 |